python_bot/handlers/pipisa.py
2024-01-21 17:00:25 +10:00

161 lines
8.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from aiogram import types, Dispatcher
from create_bot import bot, dp
import random
from random import randint
import datetime
from dicktxt import ForReadDict
from dicktxt import change_words
from pipisa_functions import pipisa_time
from DBChat import user_operations
from TopMsg import topdicks
#### https://docs.python-arango.com/en/main/
from arango import ArangoClient
admins = [317051301, 226765676]
@dp.message_handler(commands=["dick"])
async def up_dick(message: types.Message):
#global size_change, dick_plus, dick_minus
if message.from_user.id in admins or message.chat.type != 'private':
arango_client = ArangoClient(hosts='https://arango.guaranteedstruggle.host')
pipisa_db = arango_client.db('pipisa', username='root', password='stolendick527')
dicks_collection = pipisa_db.collection('dicks')
result = randint(-9,10) # главный рандомайзер
try: ## Тело метода прокрутки
candidate_cursor = dicks_collection.find( ## Проверить наличие пользователя в базе
{
'user_id': message.from_user.id,
'chat_id': message.chat.id
},
skip=0, limit=1488)
if candidate_cursor.count() > 0: ## Если пользователь есть то нарастить и отправить сообщение
user = candidate_cursor.pop()
if pipisa_time.rolltime(check_datetime=user['datetimes'], curr_time=datetime.datetime.now()):
updetedDick = user["dick_size"] + result ## получение итогового результата
pipisa_word = ForReadDict.RandomDick()
change_word = change_words.ChangeWord(result)
prev_enl_message_id = user["reply_id"]
await bot.delete_message(prev_enl_message_id)
enl_message = await bot.send_message(message.chat.id, f"@\
{message.from_user.username}, \
ваш <em>{pipisa_word}</em> ,{change_word(result)} на <b>{abs(result)}</b> см!\n\ \
Теперь он равен <b>{updetedDick}</b> см! ")
try:
dt = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
metadata = dicks_collection.insert(
{
'_key': user['_key'], ## этот нужен чтобы апдейт прилетал тому же юзеру
'user_id': user['user_id'],
'user_fullname': message.from_user.full_name,
'dick_size': updetedDick,
'datetimes': datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
'attempts': user['attempts'] + 1,
'chat_id': message.chat.id,
'reply_id': enl_message.id
},
overwrite_mode='update'
)
print(f'Успешно апдейтнули пипису @{message.from_user.username}')
except Exception as update_err:
print(f'ошибка в обновлении пиписы @{message.from_user.username}')
print(update_err)
else:
prev_err_message_id = user["reply_id"] ##удалить предыдущее сообщение
await bot.delete_message(prev_err_message_id)
error_msg = await bot.send_message(message.chat.id, f'@\
{message.from_user.username},🚫 вы уже крутили пипису, \
ее размер <b>{user["dick_size"]}</b> см! ')
try:
metadata = dicks_collection.insert(
{
'_key': user['_key'], ### этот нужен чтобы апдейт прилетал тому же юзеру
'user_id': user['user_id'] ,
'user_fullname': message.from_user.full_name,
'dick_size': user['dick_size'] ,
'datetimes': user['datetimes'] ,
'attempts': user['attempts'] + 1,
'chat_id': message.chat.id,
'reply_id': error_msg.id
},
overwrite_mode='update'
)
print(f'Успешно апдейтнули попытку крутить пипису @{message.from_user.username}')
except Exception as roll_err:
print(f'ошибка в обновлении попытки крутить пипису @{message.from_user.username}')
print(roll_err)
print(f'пользователь @{message.from_user.username} уже крутил')
else: ## если пользователь не найден то создаём ему запись в БД
if result > 0:
new_reply = await bot.send_message(message.chat.id, f'@\
{message.from_user.username}, ваш писюн показал головку 🚀\n\
на <b>{abs(result)}</b> см!\n\
Теперь он равен <b>{result}</b> см!')
else:
new_reply =await bot.send_message(message.chat.id, f'@\
{message.from_user.username}, добро пожаловать в игру!🚀\n\
Ты стартуешь не с лучшей позиции, природа наградила тебя всего <b>{result}</b> см 😬')
user_operations.UserCreate(dicks_collection, message, result, new_reply.id)
print(f'Успешно добавлен пользователь @{message.from_user.username}')
except Exception as crit_err:
print('ошибка DB в /dick')
print(crit_err)
else:
await message.reply('Растить елду можно только в общих чатах!')
@dp.message_handler(commands=["topdick"])
async def send_topchat(message: types.Message): # тело метода лучших результатов отдельной конфы
if message.from_user.id in admins or message.chat.type != 'private':
dickos = topdicks.topdicks_conf(message.chat.id)
await bot.send_message(message.chat.id, '🏆Топ 10 бубылд чата🏆\n\n' + dickos)
else:
await message.reply('Работает только в общих чатах!\n'\
'Вы мсжете посмотреть топ по миру: /globaldick')
@dp.message_handler(commands=["globaldick"])
async def send_global_top(message: types.Message): # тело метода лучших результатов
tops = topdicks.topdicks_global(message.chat.id,)
await bot.send_message(message.chat.id, '🏆Топ 10 пипис в мире🏆\n\n' + tops)