pizda-bot/main.py
Administrator cf3e77cb02 configs
2023-09-26 10:09:01 +03:00

131 lines
4.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import os
from random import randrange
import telebot
from cachetools import TTLCache
from requests import get
from telebot.types import Message
from mongo import mongo
from storage import set_values, get_chat_info
DEFAULT_ANSWERS = {
"a": "Хуй на!",
"da": "Pizda!",
"а": "Хуй на!",
"200": "Отсоси на месте!",
"300": "Отсоси у тракториста!",
"dа": "Pizda!",
"gde": "V pizde!",
"net": "Pidora otvet!",
"дa": "Пизда!",
"чe": "Хуй через плечо!",
"чo": "Хуй через плечо!",
"gdе": "V pizde!",
"heт": "Пидора ответ!",
"nеt": "Pidora otvet!",
"да": "Пизда!",
"че": "Хуй через плечо!",
"чо": "Хуй через плечо!",
"чё": "Хуй через плечо!",
"hет": "Пидора ответ!",
"гдe": "В пизде!",
"нeт": "Пидора ответ!",
"ага": "В жопе нога!",
"где": "В пизде!",
"как": "Жопой об косяк!",
"кто": "Конь в пальто!",
"нет": "Пидора ответ!",
"ога": "В жопе нога!",
"опа": "Срослась пизда и жопа!",
"угу": "Иди в пизду!",
"слыш": "За углом поссышь!",
"ладно": "Прохладно!",
"слышь": "За углом поссышь!",
"двести": "Отсоси на месте!",
"триста": "Отсоси у тракториста!",
"здрасте": "Пизду покрасьте!",
"здрасьте": "Пизду покрасьте!"
}
bot = telebot.TeleBot(os.getenv("TELEGRAM_TOKEN"))
security_token = os.getenv("PLATFORM_SECURITY_TOKEN")
stage = os.getenv("STAGE")
all_letters = "йцукенгшщзхъёфывапролджэячсмитьбюЙЦУКЕНГШЩЗХЪЁФЫВАПРОЛДЖЭЯЧСМИТЬБЮQWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890 "
CACHE_CONFIG = TTLCache(1, 60)
def get_answers():
answers = CACHE_CONFIG.get('answers')
if answers is None:
answers_response = get(
'https://platform.sprinthub.ru/configs/get',
headers={'X-Security-Token': security_token},
params={
'project': "Pizda Bot",
'stage': stage,
'name': "answers"
}
)
if answers_response.status_code != 200:
print("ERROR")
return DEFAULT_ANSWERS
answers = answers_response.json()
CACHE_CONFIG['answers'] = answers
return answers
@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 = get_answers().get(convert_text)
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()