90 lines
3.4 KiB
Python
90 lines
3.4 KiB
Python
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()
|