import os from random import randrange import telebot from telebot.types import Message from mongo import mongo from storage import set_values, get_chat_info bot = telebot.TeleBot(os.getenv("TELEGRAM_TOKEN")) all_letters = "йцукенгшщзхъёфывапролджэячсмитьбюЙЦУКЕНГШЩЗХЪЁФЫВАПРОЛДЖЭЯЧСМИТЬБЮQWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890 " answers = [ [{"да", "дa"}, "Пизда!"], [{"da", "dа"}, "Pizda!"], [{'нет', 'нeт', 'hет', 'heт'}, "Пидора ответ!"], [{"net", "nеt"}, "Pidora otvet!"], [{"где", "гдe"}, "В пизде!"], [{"gde", "gdе"}, "V pizde!"], [{"300", "триста"}, "Отсоси у тракториста!"], [{"a", "а"}, "Хуй на!"], [{"че", "чё", "чe", "чо", "чo"}, "Хуй через плечо!"], [{"ага", "ога"}, "В жопе нога!"], [{"как"}, "Жопой об косяк!"], [{"кто"}, "Конь в пальто!"], [{"200", "двести"}, "Отсоси на месте!"], [{"слышь", "слыш"}, "За углом поссышь!"], [{"здрасте", "здрасьте"}, "Пизду покрасьте!"], [{"ладно"}, "Прохладно!"], [{"угу"}, "Иди в пизду!"], [{"опа"}, "Срослась пизда и жопа!"], [{"ес"}, "Хуес!"], [{"алло", "ало"}, "Хуем по лбу не дало?"] ] @bot.message_handler(commands=['setprobability']) def set_probability(message: Message): bot.send_message(message.chat.id, "Отправь одно число - вероятность парирования") set_values(message.chat.id, state="set_probability") @bot.message_handler(commands=['rating']) def show_rating(message: Message): rating = list(mongo.counter_collection.find({"chat_id": message.chat.id}).sort("count", -1)) if not rating: bot.send_message(message.chat.id, "В этом чате я пока никому не парировал") return text = "Вот кому я парировал:\n" rating_arr = list(enumerate(rating)) total = 0 for _, value in rating_arr: total += value['count'] for index, value in rating_arr: text += f"{index + 1}. @{value['username']} - {value['count']} ({int(value['count'] / total * 100)}%)\n" bot.send_message(message.chat.id, text) @bot.message_handler() def do_action(message: Message): info = get_chat_info(message.chat.id) if info['state'] == "set_probability": try: value = int(message.text) if value < 0 or value > 100: bot.reply_to(message, "Число не попадает в диапозон от 0 до 100!") else: set_values(message.chat.id, probability=value, state="default") bot.reply_to(message, "Ок! Установил") except ValueError: bot.reply_to(message, "Это не число!") return convert_text = ''.join([letter for letter in message.text if letter in all_letters]).lower().split() if len(convert_text) > 0: convert_text = convert_text[-1] else: return ans = None for key, value in answers: if convert_text in key: ans = value break if ans is not None and randrange(1, 101) <= info["probability"]: bot.reply_to(message, ans) mongo.inc(message.from_user.username, message.chat.id) bot.polling()