только положительный пипис для новичков

This commit is contained in:
Pavel_Durov 2024-01-28 14:04:58 +03:00
parent 56450bc566
commit 1b2410afc4

View File

@ -1,120 +1,238 @@
from aiogram import types from aiogram import types, Dispatcher
#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, logging import datetime
from dicktxt import ForReadDict, WordsChange from dicktxt import ForReadDict
from pipisa_functions import pipisa_time from pipisa_functions import pipisa_time
from global_conf import CONFIG
from db_logic import tops, user_stuff, postcleaner #### https://docs.python-arango.com/en/main/
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') arango_client = ArangoClient(hosts='https://arango.guaranteedstruggle.host')
await clean_posts(chat_id=message.chat.id, type='COMMAND_CALL__DICK', max_id=message.message_id) pipisa_db = arango_client.db('pipisa', username='root', password='stolendick527')
dicks_collection = pipisa_db.collection('dicks')
#### TODO уплатить нолог с 100 см для самого нищего
# рандомайзер # рандомайзер
result = randint(-9,10) numb = 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:
#### Чекнуть есть ли юзер в базе #### Чекнуть есть ли юзер в базе
user = user_stuff.get_user(message) candidate_cursor = dicks_collection.find(
{
'user_id': message.from_user.id,
'chat_id': message.chat.id
},
skip=0, limit=1488)
if user: if candidate_cursor.count() > 0:
## Если есть то нарастить и отправить сообщение ## Если есть то нарастить и отправить сообщение
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()):
# пришло время крутить!! # пришло время крутить!!
updatedDick = user["dick_size"] + result updetedDick = user["dick_size"] + numb
user_stuff.update_dick_size(message, user, updatedDick) try:
dt = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
randomdickword = ForReadDict.RandomDick() metadata = dicks_collection.insert(
change_phrase = WordsChange.ChangeWord(result) {
'_key': user['_key'], ### этот нужен чтобы апдейт прилетал тому же юзеру
await bot.send_message( message.chat.id, 'user_id': user['user_id'],
f'@{message.from_user.username}, ваш <em>{randomdickword}</em> {change_phrase} на <b>{abs(result)}</b> см!\nТеперь он равен <b>{updatedDick}</b> см! ' '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: else:
mmm = await bot.send_message( message.chat.id, await bot.send_message(message.chat.id, f'@{message.from_user.username},🚫 вы уже крутили пипису, ее размер <b>{user["dick_size"]}</b> см! ')
f'@{message.from_user.username}, 🚫 вы уже крутили пипису, её размер <b>{user["dick_size"]}</b> см! '
) try:
user_stuff.update_attempts( message, user) 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} уже крутил')
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)
if result > 0: try:
await bot.send_message( message.chat.id, novenkiy = {
f'@{message.from_user.username}, ваш писюн показал головку 🚀\nна <b>{abs(result)}</b> см!\nТеперь он равен <b>{result}</b> см!' 'user_id': message.from_user.id,
) 'user_fullname': message.from_user.full_name,
else: 'dick_size': abs(numb),
await bot.send_message( message.chat.id, 'datetimes': datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
f'@{message.from_user.username}, добро пожаловать в игру!🚀\nТы стартуешь не с лучшей позиции, природа наградила тебя всего <b>{result}</b> см 😬' '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':
top_ = message['text'].startswith('/topdick') arango_client = ArangoClient(hosts='https://arango.guaranteedstruggle.host')
glob_ = message['text'].startswith('/globaldick') pipisa_db = arango_client.db('pipisa', username='root', password='stolendick527')
dicks_collection = pipisa_db.collection('dicks')
if top_:
dickos = tops.get_tops( top_ = True, chat_id=message.chat.id )
postcleaner.append_post_to_cleaning_sequence(message=message, type=f'COMMAND_CALL__TOPDICK')
await clean_posts(chat_id=message.chat.id, type='COMMAND_CALL__TOPDICK', max_id=message.message_id)
elif glob_:
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('вызывают хз что!')
if not dickos:
await bot.send_message(message.chat.id, '🍆 Никто ничего не нарастил! 🍌')
else:
if top_:
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:
await message.reply('Работает только в общих чатах!\n'\
'Вы можете посмотреть топ по миру /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'])
#### TODO проверить админит ли бот
try: try:
await bot.delete_message( chat_id=p['chat_id'], message_id=p['msg_id'], ) dicks = dicks_collection.find({'chat_id': message.chat.id}, skip=0, limit=1100)
dicks = [d for d in dicks]
except Exception as e: except Exception as e:
logging.error('ошибка удаления поста-на-удаление') print('ошибка DB в /topdick')
logging.error(e) 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)
else:
await message.reply('Работает только в общих чатах!\n'\
'Вы мсжете посмотреть топ по миру /globaldick')
@dp.message_handler(commands=["globaldick"])
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:
dicks = dicks_collection.all( )
dicks = [d for d in dicks if d['user_id'] != d['chat_id']]
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)