This commit is contained in:
Simple_Not 2024-01-28 14:14:41 +10:00
parent 1b2410afc4
commit f20c90ea34

View File

@ -1,238 +1,121 @@
from aiogram import types, Dispatcher from aiogram import types
#from sqlalchemy.orm.session import close_all_sessions
from create_bot import bot, dp from create_bot import bot, dp
#from sqdb import user, session
import random import random
from random import randint from random import randint
import datetime import datetime, logging
from dicktxt import ForReadDict from dicktxt import ForReadDict, WordsChange
from pipisa_functions import pipisa_time from pipisa_functions import pipisa_time
from global_conf import CONFIG
#### https://docs.python-arango.com/en/main/ from db_logic import tops, user_stuff, postcleaner
from arango import ArangoClient
admins = CONFIG['telegram_admins_ids']
admins = [317051301, 226765676]
@dp.message_handler(commands=["dick"]) @dp.message_handler(commands=["dick"])
async def up_dick(message: types.Message): 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': if message.from_user.id in admins or message.chat.type != 'private':
arango_client = ArangoClient(hosts='https://arango.guaranteedstruggle.host') postcleaner.append_post_to_cleaning_sequence(message=message, type=f'COMMAND_CALL__DICK')
pipisa_db = arango_client.db('pipisa', username='root', password='stolendick527') await clean_posts(chat_id=message.chat.id, type='COMMAND_CALL__DICK', max_id=message.message_id)
dicks_collection = pipisa_db.collection('dicks')
#### TODO уплатить нолог с 100 см для самого нищего
# рандомайзер # рандомайзер
numb = randint(-9,10) result = randint(-9,10)
dick_plus = (
'<b>вырос</b>',
'<b>подрос</b>',
'<b>привстал</b>',
'<b>увеличился</b>',
'<b>преисполнился</b>'
)
dick_minus = (
'<b>неудачно потусил на сходке</b>',
'<b>уменьшился</b>',
'<b>откусила злая гадюка</b>',
'<b>продали евреи, он стал дешевле</b>',
'<b>схуднул</b>'
)
dick_stayed = (
'<b>продвинулся</b>',
'<b>наноуменьшился</b>',
'<b>зафиксировал прибыль</b>'
)
if numb > 0:
size_change = random.choice(dick_plus) + '🚀'
elif numb == 0:
size_change = random.choice(dick_stayed) + '🤨'
else:
size_change = random.choice(dick_minus) + ''
try:
#### Чекнуть есть ли юзер в базе #### Чекнуть есть ли юзер в базе
candidate_cursor = dicks_collection.find( user = user_stuff.get_user(message)
{
'user_id': message.from_user.id,
'chat_id': message.chat.id
},
skip=0, limit=1488)
if candidate_cursor.count() > 0: if user:
## Если есть то нарастить и отправить сообщение ## Если есть то нарастить и отправить сообщение
user = candidate_cursor.pop()
if pipisa_time.rolltime(check_datetime=user['datetimes'], curr_time=datetime.datetime.now()): if pipisa_time.rolltime(check_datetime=user['datetimes'], curr_time=datetime.datetime.now()):
# пришло время крутить!! # пришло время крутить!!
updetedDick = user["dick_size"] + numb updatedDick = user["dick_size"] + result
try: user_stuff.update_dick_size(message, user, updatedDick)
dt = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
metadata = dicks_collection.insert( randomdickword = ForReadDict.RandomDick()
{ change_phrase = WordsChange.ChangeWord(result)
'_key': user['_key'], ### этот нужен чтобы апдейт прилетал тому же юзеру
'user_id': user['user_id'], await bot.send_message( message.chat.id,
'user_fullname': message.from_user.full_name, f'@{message.from_user.username}, ваш <em>{randomdickword}</em> {change_phrase} на <b>{abs(result)}</b> см!\nТеперь он равен <b>{updatedDick}</b> см! '
'dick_size': updetedDick,
'datetimes': datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
'attempts': user['attempts'] + 1,
'chat_id': message.chat.id
},
overwrite_mode='update'
) )
print(f'Успешно апдейтнули пипису @{message.from_user.username}')
except Exception as e2:
print(f'ошибка в обновлении пиписы @{message.from_user.username}')
print(e2)
randomword = ForReadDict.RandomDick()
await bot.send_message(message.chat.id, f'@{message.from_user.username}, ваш <em>{randomword}</em> {size_change}\
на <b>{abs(numb)}</b> см!\n\
Теперь он равен <b>{updetedDick}</b> см! ')
else: else:
await bot.send_message(message.chat.id, f'@{message.from_user.username},🚫 вы уже крутили пипису, ее размер <b>{user["dick_size"]}</b> см! ') mmm = 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
},
overwrite_mode='update'
) )
print(f'Успешно апдейтнули попытку крутить пипису @{message.from_user.username}') user_stuff.update_attempts( message, user)
except Exception as e2:
print(f'ошибка в обновлении попытки крутить пипису @{message.from_user.username}')
print(e2)
print(f'пользователь @{message.from_user.username} уже крутил')
postcleaner.append_post_to_cleaning_sequence(message=mmm, type='ALREADY_ROLLED')
await clean_posts(chat_id=mmm.chat.id, type='ALREADY_ROLLED', max_id=mmm.message_id)
else: else:
## если нету, то создать ## если нету, то создать
user_stuff.store_new_user(message, result)
try: if result > 0:
novenkiy = { await bot.send_message( message.chat.id,
'user_id': message.from_user.id, f'@{message.from_user.username}, ваш писюн показал головку 🚀\nна <b>{abs(result)}</b> см!\nТеперь он равен <b>{result}</b> см!'
'user_fullname': message.from_user.full_name, )
'dick_size': abs(numb), else:
'datetimes': datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), await bot.send_message( message.chat.id,
'attempts': 1, f'@{message.from_user.username}, добро пожаловать в игру!🚀\nТы стартуешь не с лучшей позиции, природа наградила тебя всего <b>{result}</b> см 😬'
'chat_id': message.chat.id )
}
metadata = dicks_collection.insert(novenkiy, overwrite_mode='update')
await bot.send_message(message.chat.id, f'@{message.from_user.username}, Добро пожаловать в игру! Ваш писюн показал головку 🚀\n\
на <b>{abs(numb)}</b> см!\n\
Теперь он равен <b>{abs(numb)}</b> см!')
print(f'Успешно добавлен пользователь @{message.from_user.username}')
except Exception as e1:
print('ошибка в добавлении нового пользователя')
print(e1)
except Exception as e:
print('ошибка DB в /dick')
print(e)
else: else:
await message.reply('Растить елду можно только в общих чатах!') await message.reply('Растить елду можно только в общих чатах!')
@dp.message_handler(commands = ['topdick', 'globaldick'])
@dp.message_handler(commands=["topdick"])
async def send_topchat(message: types.Message): async def send_topchat(message: types.Message):
if message.from_user.id in admins or message.chat.type != 'private': if message.from_user.id in admins or message.chat.type != 'private':
arango_client = ArangoClient(hosts='https://arango.guaranteedstruggle.host') top_ = message['text'].startswith('/topdick')
pipisa_db = arango_client.db('pipisa', username='root', password='stolendick527') glob_ = message['text'].startswith('/globaldick')
dicks_collection = pipisa_db.collection('dicks')
try: if top_:
dicks = dicks_collection.find({'chat_id': message.chat.id}, skip=0, limit=1100) dickos = tops.get_tops( top_ = True, chat_id=message.chat.id )
dicks = [d for d in dicks] postcleaner.append_post_to_cleaning_sequence(message=message, type=f'COMMAND_CALL__TOPDICK')
except Exception as e: await clean_posts(chat_id=message.chat.id, type='COMMAND_CALL__TOPDICK', max_id=message.message_id)
print('ошибка DB в /topdick') elif glob_:
print(e) dickos = tops.get_tops( glob_ = True )
postcleaner.append_post_to_cleaning_sequence(message=message, type=f'COMMAND_CALL__GLOBALDICK')
await clean_posts(chat_id=message.chat.id, type='COMMAND_CALL__GLOBALDICK', max_id=message.message_id)
else:
logging.error('вызывают хз что!')
top_dicks = sorted(dicks, key=lambda dick: dick['dick_size'], reverse=True)
dick_limit = min(len(top_dicks), 10) if not dickos:
top_dicks = top_dicks[:dick_limit]
dickos = ''
emo = ['🏆','🚀','🍆','🍌','🐍','🐎','🌭','🌶','👌','💩']
if len(top_dicks) == 0:
await bot.send_message(message.chat.id, '🍆 Никто ничего не нарастил! 🍌') await bot.send_message(message.chat.id, '🍆 Никто ничего не нарастил! 🍌')
else: else:
for i in range(len(top_dicks)): if top_:
dickos += f' {emo[i]} {i+1}. {top_dicks[i]["user_fullname"]}: {top_dicks[i]["dick_size"]}см\n'
i += 1
await bot.send_message(message.chat.id, '🏆Топ 10 бубылд чата🏆\n\n' + dickos) await bot.send_message(message.chat.id, '🏆Топ 10 бубылд чата🏆\n\n' + dickos)
elif glob_:
await bot.send_message(message.chat.id, '🏆Топ 10 пипис в мире🏆\n\n' + dickos)
else: else:
await message.reply('Работает только в общих чатах!\n'\ await message.reply('Работает только в общих чатах!\n'\
'Вы мсжете посмотреть топ по миру /globaldick') 'Вы можете посмотреть топ по миру /globaldick')
async def clean_posts(chat_id, type=None, max_id=None):
psts = postcleaner.get_posts_to_be_removed(chat_id, type, max_id)
for p in psts:
postcleaner.del_post(chat_id=p['chat_id'], msg_id=p['msg_id'])
@dp.message_handler(commands=["globaldick"]) #### TODO проверить админит ли бот
async def send_global_top(message: types.Message):
arango_client = ArangoClient(hosts='https://arango.guaranteedstruggle.host')
pipisa_db = arango_client.db('pipisa', username='root', password='stolendick527')
dicks_collection = pipisa_db.collection('dicks')
try: try:
dicks = dicks_collection.all( ) await bot.delete_message( chat_id=p['chat_id'], message_id=p['msg_id'], )
dicks = [d for d in dicks if d['user_id'] != d['chat_id']]
except Exception as e: except Exception as e:
print('ошибка DB в /glovaldick') logging.error('ошибка удаления поста-на-удаление')
print(e) logging.error(e)
top_dicks = sorted(dicks, key=lambda dick: dick['dick_size'], reverse=True)
dick_limit = min(len(top_dicks), 10)
top_dicks = top_dicks[:dick_limit]
dickos = ''
emo = ['🏆','🚀','💫','🍆','🍌','🐍','🐎','🌭','🌶','👌']
if len(top_dicks) == 0:
await bot.send_message(message.chat.id, '🍆 Никто ничего не нарастил! 🍌')
else:
for i in range(len(top_dicks)):
dickos += f' {emo[i]} {i+1}. {top_dicks[i]["user_fullname"]}: {top_dicks[i]["dick_size"]}см\n'
i += 1
await bot.send_message(message.chat.id, '🏆Топ 10 пипис в мире🏆\n\n' + dickos)