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':
postcleaner.append_post_to_cleaning_sequence(message=message, type=f'COMMAND_CALL__DICK')
await clean_posts(chat_id=message.chat.id, type='COMMAND_CALL__DICK', max_id=message.message_id)
arango_client = ArangoClient(hosts='https://arango.guaranteedstruggle.host') #### TODO уплатить нолог с 100 см для самого нищего
pipisa_db = arango_client.db('pipisa', username='root', password='stolendick527')
dicks_collection = pipisa_db.collection('dicks')
# рандомайзер # рандомайзер
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>'
)
#### Чекнуть есть ли юзер в базе
user = user_stuff.get_user(message)
if numb > 0: if user:
size_change = random.choice(dick_plus) + '🚀' ## Если есть то нарастить и отправить сообщение
elif numb == 0:
size_change = random.choice(dick_stayed) + '🤨' if pipisa_time.rolltime(check_datetime=user['datetimes'], curr_time=datetime.datetime.now()):
# пришло время крутить!!
updatedDick = user["dick_size"] + result
user_stuff.update_dick_size(message, user, updatedDick)
randomdickword = ForReadDict.RandomDick()
change_phrase = WordsChange.ChangeWord(result)
await bot.send_message( message.chat.id,
f'@{message.from_user.username}, ваш <em>{randomdickword}</em> {change_phrase} на <b>{abs(result)}</b> см!\nТеперь он равен <b>{updatedDick}</b> см! '
)
else:
mmm = await bot.send_message( message.chat.id,
f'@{message.from_user.username}, 🚫 вы уже крутили пипису, её размер <b>{user["dick_size"]}</b> см! '
)
user_stuff.update_attempts( message, user)
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:
size_change = random.choice(dick_minus) + '' ## если нету, то создать
user_stuff.store_new_user(message, result)
if result > 0:
try: await bot.send_message( message.chat.id,
#### Чекнуть есть ли юзер в базе f'@{message.from_user.username}, ваш писюн показал головку 🚀\nна <b>{abs(result)}</b> см!\nТеперь он равен <b>{result}</b> см!'
candidate_cursor = dicks_collection.find( )
{ else:
'user_id': message.from_user.id, await bot.send_message( message.chat.id,
'chat_id': message.chat.id f'@{message.from_user.username}, добро пожаловать в игру!🚀\nТы стартуешь не с лучшей позиции, природа наградила тебя всего <b>{result}</b> см 😬'
}, )
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"] + numb
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
},
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:
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}')
except Exception as e2:
print(f'ошибка в обновлении попытки крутить пипису @{message.from_user.username}')
print(e2)
print(f'пользователь @{message.from_user.username} уже крутил')
else:
## если нету, то создать
try:
novenkiy = {
'user_id': message.from_user.id,
'user_fullname': message.from_user.full_name,
'dick_size': abs(numb),
'datetimes': datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
'attempts': 1,
'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)
top_dicks = top_dicks[:dick_limit]
dickos = ''
emo = ['🏆','🚀','🍆','🍌','🐍','🐎','🌭','🌶','👌','💩']
if len(top_dicks) == 0: if not dickos:
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' await bot.send_message(message.chat.id, '🏆Топ 10 бубылд чата🏆\n\n' + dickos)
i += 1 elif glob_:
await bot.send_message(message.chat.id, '🏆Топ 10 пипис в мире🏆\n\n' + dickos)
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)
@dp.message_handler(commands=["globaldick"])
async def send_global_top(message: types.Message): for p in psts:
postcleaner.del_post(chat_id=p['chat_id'], msg_id=p['msg_id'])
arango_client = ArangoClient(hosts='https://arango.guaranteedstruggle.host') #### TODO проверить админит ли бот
pipisa_db = arango_client.db('pipisa', username='root', password='stolendick527')
dicks_collection = pipisa_db.collection('dicks') try:
await bot.delete_message( chat_id=p['chat_id'], message_id=p['msg_id'], )
try: except Exception as e:
dicks = dicks_collection.all( ) logging.error('ошибка удаления поста-на-удаление')
dicks = [d for d in dicks if d['user_id'] != d['chat_id']] logging.error(e)
except Exception as e:
print('ошибка DB в /glovaldick')
print(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)