Some refactor

This commit is contained in:
RakVhalate 2024-01-21 17:00:25 +10:00
parent deac88534a
commit 10df69242d
6 changed files with 187 additions and 149 deletions

18
DBChat/user_operations.py Normal file
View File

@ -0,0 +1,18 @@
import datetime
def UserCreate(DBName, message, result, replyId): #create new user
new_user = { #описание класса пользователя
'user_id': message.from_user.id, #уникальный идентификатор пользователя
'user_fullname': message.from_user.full_name, #никнэйм
'dick_size': result, #размер пиписы
'datetimes': datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), #время прокрута
'attempts': 1, #общее количество попыток прокрутки
'chat_id': message.chat.id, #уникальный идентификатор конфы, в которой этот пользователь крутит
'reply_id': replyId.id #идентификатор последнего ответа для этого пользователя
}
try:
metadata = DBName.insert(new_user, overwrite_mode='update')
except Exception as add_err:
print('ошибка в добавлении нового пользователя')
print(add_err)

64
TopMsg/topdicks.py Normal file
View File

@ -0,0 +1,64 @@
async def topdicks_conf(chatId): # тело метода лучших результатов отдельной конфы
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.find({'chat_id': chatId}, skip=0, limit=1100)
dicks = [d for d in dicks]
except Exception as e:
print('ошибка DB в /topdick')
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]
conf_top = ''
emo = ['🏆','🚀','🍆','🍌','🐍','🐎','🌭','🌶','👌','💩']
if len(top_dicks) == 0:
await bot.send_message(message.chat.id, '🍆 Никто ничего не нарастил! 🍌')
else:
for i in range(len(top_dicks)):
conf_top += f' {emo[i]} {i+1}. {top_dicks[i]["user_fullname"]}: {top_dicks[i]["dick_size"]}см\n'
i += 1
return conf_top
async def topdicks_global(chatId): #тело метода глобальных лучших результатов
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]
global_top = ''
emo = ['🏆','🚀','💫','🍆','🍌','🐍','🐎','🌭','🌶','👌']
if len(top_dicks) == 0:
await bot.send_message(chatId, '🍆 Никто ничего не нарастил! 🍌')
else:
for i in range(len(top_dicks)):
global_top += f' {emo[i]} {i+1}. {top_dicks[i]["user_fullname"]}: {top_dicks[i]["dick_size"]}см\n'
i += 1
return global_top

34
dicktxt/change_words.py Normal file
View File

@ -0,0 +1,34 @@
import random
def ChangeWord(result): #выбирает рандомное слово для изменения размера пиписы
if result > 0:
size_change = random.choice(dick_inc) + '🚀'
elif result == 0:
size_change = random.choice(dick_static) + '🤨'
else:
size_change = random.choice(dick_decr) + ''
dick_inc = (
'<b>вырос</b>',
'<b>подрос</b>',
'<b>привстал</b>',
'<b>увеличился</b>',
'<b>преисполнился</b>'
)
dick_static = (
'<b>продвинулся</b>',
'<b>наноуменьшился</b>',
'<b>познал стабильность</b>',
'<b>зафиксировал прибыль</b>'
)
dick_decr = (
'<b>неудачно потусил на сходке</b>',
'<b>уменьшился</b>',
'<b>откусила злая гадюка</b>',
'<b>продали евреи, он стал дешевле</b>',
'<b>схуднул</b>'
'<b>отрицательно вырос</b>'
)
return size_change

View File

@ -1,4 +1,4 @@
Кожаный бабах кожаный бабах
пистон пистон
дуршлаг дуршлаг
елдак елдак
@ -92,4 +92,5 @@
маленький жиголо маленький жиголо
венерический суккуб венерический суккуб
боец невидимого фронта боец невидимого фронта
сморчок сморчок
джечник

View File

@ -1,12 +1,13 @@
from aiogram import types, Dispatcher 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 import datetime
from dicktxt import ForReadDict from dicktxt import ForReadDict
from dicktxt import change_words
from pipisa_functions import pipisa_time from pipisa_functions import pipisa_time
from DBChat import user_operations
from TopMsg import topdicks
#### https://docs.python-arango.com/en/main/ #### https://docs.python-arango.com/en/main/
@ -27,83 +28,67 @@ async def up_dick(message: types.Message):
dicks_collection = pipisa_db.collection('dicks') 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>'
)
if numb > 0: try: ## Тело метода прокрутки
size_change = random.choice(dick_plus) + '🚀'
elif numb == 0: candidate_cursor = dicks_collection.find( ## Проверить наличие пользователя в базе
size_change = random.choice(dick_stayed) + '🤨'
else:
size_change = random.choice(dick_minus) + ''
try:
#### Чекнуть есть ли юзер в базе
candidate_cursor = dicks_collection.find(
{ {
'user_id': message.from_user.id, 'user_id': message.from_user.id,
'chat_id': message.chat.id 'chat_id': message.chat.id
}, },
skip=0, limit=1488) skip=0, limit=1488)
if candidate_cursor.count() > 0: if candidate_cursor.count() > 0: ## Если пользователь есть то нарастить и отправить сообщение
## Если есть то нарастить и отправить сообщение
user = candidate_cursor.pop() 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 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: try:
dt = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") dt = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
metadata = dicks_collection.insert( metadata = dicks_collection.insert(
{ {
'_key': user['_key'], ### этот нужен чтобы апдейт прилетал тому же юзеру '_key': user['_key'], ## этот нужен чтобы апдейт прилетал тому же юзеру
'user_id': user['user_id'], 'user_id': user['user_id'],
'user_fullname': message.from_user.full_name, 'user_fullname': message.from_user.full_name,
'dick_size': updetedDick, 'dick_size': updetedDick,
'datetimes': datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), 'datetimes': datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
'attempts': user['attempts'] + 1, 'attempts': user['attempts'] + 1,
'chat_id': message.chat.id 'chat_id': message.chat.id,
'reply_id': enl_message.id
}, },
overwrite_mode='update' overwrite_mode='update'
) )
print(f'Успешно апдейтнули пипису @{message.from_user.username}') print(f'Успешно апдейтнули пипису @{message.from_user.username}')
except Exception as e2: except Exception as update_err:
print(f'ошибка в обновлении пиписы @{message.from_user.username}') print(f'ошибка в обновлении пиписы @{message.from_user.username}')
print(e2) print(update_err)
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> см! ')
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: try:
metadata = dicks_collection.insert( metadata = dicks_collection.insert(
{ {
@ -113,51 +98,39 @@ async def up_dick(message: types.Message):
'dick_size': user['dick_size'] , 'dick_size': user['dick_size'] ,
'datetimes': user['datetimes'] , 'datetimes': user['datetimes'] ,
'attempts': user['attempts'] + 1, 'attempts': user['attempts'] + 1,
'chat_id': message.chat.id 'chat_id': message.chat.id,
'reply_id': error_msg.id
}, },
overwrite_mode='update' overwrite_mode='update'
) )
print(f'Успешно апдейтнули попытку крутить пипису @{message.from_user.username}') print(f'Успешно апдейтнули попытку крутить пипису @{message.from_user.username}')
except Exception as e2: except Exception as roll_err:
print(f'ошибка в обновлении попытки крутить пипису @{message.from_user.username}') print(f'ошибка в обновлении попытки крутить пипису @{message.from_user.username}')
print(e2) print(roll_err)
print(f'пользователь @{message.from_user.username} уже крутил') print(f'пользователь @{message.from_user.username} уже крутил')
else: else: ## если пользователь не найден то создаём ему запись в БД
## если нету, то создать
if result > 0:
try: new_reply = await bot.send_message(message.chat.id, f'@\
novenkiy = { {message.from_user.username}, ваш писюн показал головку 🚀\n\
'user_id': message.from_user.id, на <b>{abs(result)}</b> см!\n\
'user_fullname': message.from_user.full_name, Теперь он равен <b>{result}</b> см!')
'dick_size': 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')
if numb > 0:
await bot.send_message(message.chat.id, f'@{message.from_user.username}, ваш писюн показал головку 🚀\n\
на <b>{abs(numb)}</b> см!\n\
Теперь он равен <b>{numb}</b> см!')
else: else:
await bot.send_message(message.chat.id, f'@{message.from_user.username}, добро пожаловать в игру!🚀\n\ new_reply =await bot.send_message(message.chat.id, f'@\
Ты стартуешь не с лучшей позиции, природа наградила тебя всего <b>{numb}</b> см 😬') {message.from_user.username}, добро пожаловать в игру!🚀\n\
Ты стартуешь не с лучшей позиции, природа наградила тебя всего <b>{result}</b> см 😬')
user_operations.UserCreate(dicks_collection, message, result, new_reply.id)
print(f'Успешно добавлен пользователь @{message.from_user.username}') print(f'Успешно добавлен пользователь @{message.from_user.username}')
except Exception as e1:
print('ошибка в добавлении нового пользователя')
print(e1)
except Exception as e: except Exception as crit_err:
print('ошибка DB в /dick') print('ошибка DB в /dick')
print(e) print(crit_err)
else: else:
await message.reply('Растить елду можно только в общих чатах!') await message.reply('Растить елду можно только в общих чатах!')
@ -166,74 +139,22 @@ async def up_dick(message: types.Message):
@dp.message_handler(commands=["topdick"]) @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') dickos = topdicks.topdicks_conf(message.chat.id)
pipisa_db = arango_client.db('pipisa', username='root', password='stolendick527') await bot.send_message(message.chat.id, '🏆Топ 10 бубылд чата🏆\n\n' + dickos)
dicks_collection = pipisa_db.collection('dicks')
try:
dicks = dicks_collection.find({'chat_id': message.chat.id}, skip=0, limit=1100)
dicks = [d for d in dicks]
except Exception as e:
print('ошибка DB в /topdick')
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: else:
await message.reply('Работает только в общих чатах!\n'\ await message.reply('Работает только в общих чатах!\n'\
'Вы мсжете посмотреть топ по миру /globaldick') 'Вы мсжете посмотреть топ по миру: /globaldick')
@dp.message_handler(commands=["globaldick"]) @dp.message_handler(commands=["globaldick"])
async def send_global_top(message: types.Message): async def send_global_top(message: types.Message): # тело метода лучших результатов
tops = topdicks.topdicks_global(message.chat.id,)
arango_client = ArangoClient(hosts='https://arango.guaranteedstruggle.host') await bot.send_message(message.chat.id, '🏆Топ 10 пипис в мире🏆\n\n' + tops)
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)

View File

@ -4,7 +4,7 @@ import datetime
@dp.message_handler(commands=["time"]) @dp.message_handler(commands=["time"])
async def send_time(message: types.Message): async def send_time(message: types.Message):
new_year = datetime.datetime(2023, 12, 31) #дата нового года new_year = datetime.datetime(datetime.now().year, 12, 31) #дата нового года
ct = datetime.datetime.now() #датавремя ct = datetime.datetime.now() #датавремя
cd = datetime.datetime.now().strftime("%d/%m/%Y") #дата (д,м,г) cd = datetime.datetime.now().strftime("%d/%m/%Y") #дата (д,м,г)
ct1 = ct+datetime.timedelta(hours=15) # +14 часов от сервера ct1 = ct+datetime.timedelta(hours=15) # +14 часов от сервера