Switch to async!
This commit is contained in:
+64
-68
@@ -12,28 +12,28 @@ from .config import *
|
|||||||
|
|
||||||
@bot.edited_message_handler(func=in_spam_list, chat_types=["supergroup", "group"])
|
@bot.edited_message_handler(func=in_spam_list, chat_types=["supergroup", "group"])
|
||||||
@bot.message_handler(func=in_spam_list, chat_types=["supergroup", "group"])
|
@bot.message_handler(func=in_spam_list, chat_types=["supergroup", "group"])
|
||||||
def moderate_messages(message: types.Message):
|
async def moderate_messages(message: types.Message):
|
||||||
"""Ban user and delete their message."""
|
"""Ban user and delete their message."""
|
||||||
bot.delete_message(message.chat.id, message.id)
|
await bot.delete_message(message.chat.id, message.id)
|
||||||
bot.ban_chat_member(message.chat.id, message.from_user.id)
|
await bot.ban_chat_member(message.chat.id, message.from_user.id)
|
||||||
with shelve.open(f"{DATA}{message.chat.id}") as s:
|
with shelve.open(f"{DATA}{message.chat.id}") as s:
|
||||||
s["Banned"] += 1
|
s["Banned"] += 1
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(func=in_caption_spam_list, content_types=["video"], chat_types=["supergroup", "group"])
|
@bot.message_handler(func=in_caption_spam_list, content_types=["video"], chat_types=["supergroup", "group"])
|
||||||
def catch_videos(message: types.Message):
|
async def catch_videos(message: types.Message):
|
||||||
"""Catch offensive videos"""
|
"""Catch offensive videos"""
|
||||||
bot.delete_message(message.chat.id, message.id)
|
await bot.delete_message(message.chat.id, message.id)
|
||||||
bot.ban_chat_member(message.chat.id, message.from_user.id)
|
await bot.ban_chat_member(message.chat.id, message.from_user.id)
|
||||||
with shelve.open(f"{DATA}{message.chat.id}") as s:
|
with shelve.open(f"{DATA}{message.chat.id}") as s:
|
||||||
s["Banned"] += 1
|
s["Banned"] += 1
|
||||||
|
|
||||||
|
|
||||||
@bot.edited_message_handler(func=in_delete_list, chat_types=["supergroup", "group"])
|
@bot.edited_message_handler(func=in_delete_list, chat_types=["supergroup", "group"])
|
||||||
@bot.message_handler(func=in_delete_list, chat_types=["supergroup", "group"])
|
@bot.message_handler(func=in_delete_list, chat_types=["supergroup", "group"])
|
||||||
def delete_message(message: types.Message):
|
async def delete_message(message: types.Message):
|
||||||
"""Delete unwanted message."""
|
"""Delete unwanted message."""
|
||||||
bot.delete_message(message.chat.id, message.id)
|
await bot.delete_message(message.chat.id, message.id)
|
||||||
with shelve.open(f"{DATA}{message.chat.id}") as s:
|
with shelve.open(f"{DATA}{message.chat.id}") as s:
|
||||||
s["Deleted"] += 1
|
s["Deleted"] += 1
|
||||||
|
|
||||||
@@ -42,30 +42,30 @@ def delete_message(message: types.Message):
|
|||||||
|
|
||||||
|
|
||||||
@bot.message_handler(commands=["start", "links", "ссылки"])
|
@bot.message_handler(commands=["start", "links", "ссылки"])
|
||||||
def start(message: types.Message):
|
async def start(message: types.Message):
|
||||||
"""What to begin with."""
|
"""What to begin with."""
|
||||||
logging.info(LOG_COMM % (message.chat.title, message.from_user.id, message.from_user.first_name, message.text))
|
logging.info(LOG_COMM % (message.chat.title, message.from_user.id, message.from_user.first_name, message.text))
|
||||||
markup = types.InlineKeyboardMarkup([[RULES], [FAQ], [LIB]], 1)
|
markup = types.InlineKeyboardMarkup([[RULES], [FAQ], [LIB]], 1)
|
||||||
send_or_reply(message, "Начни с прочтения", reply_markup=markup)
|
await send_or_reply(message, "Начни с прочтения", reply_markup=markup)
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(commands=["rules", "rule", "r", "правила", "правило", "п"])
|
@bot.message_handler(commands=["rules", "rule", "r", "правила", "правило", "п"])
|
||||||
def send_rules(message: types.Message):
|
async def send_rules(message: types.Message):
|
||||||
markup = types.InlineKeyboardMarkup([[RULES]], 1)
|
markup = types.InlineKeyboardMarkup([[RULES]], 1)
|
||||||
args = message.text.split()
|
args = message.text.split()
|
||||||
logging.info(LOG_COMM % (message.chat.title, message.from_user.id, message.from_user.first_name, message.text))
|
logging.info(LOG_COMM % (message.chat.title, message.from_user.id, message.from_user.first_name, message.text))
|
||||||
if len(args) > 1 and args[-1].isdigit() and 0 < int(args[-1]):
|
if len(args) > 1 and args[-1].isdigit() and 0 < int(args[-1]):
|
||||||
send_or_reply(
|
await send_or_reply(
|
||||||
message,
|
message,
|
||||||
f"<b>Правило {args[-1]}</b>\n<i>{rules.fetch_rule(args[-1])}</i>",
|
f"<b>Правило {args[-1]}</b>\n<i>{rules.fetch_rule(args[-1])}</i>",
|
||||||
reply_markup=markup,
|
reply_markup=markup,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
send_or_reply(message, "...", reply_markup=markup)
|
await send_or_reply(message, "...", reply_markup=markup)
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(commands=["faq", "чзв"])
|
@bot.message_handler(commands=["faq", "чзв"])
|
||||||
def send_faq(message: types.Message):
|
async def send_faq(message: types.Message):
|
||||||
logging.info(
|
logging.info(
|
||||||
LOG_COMM
|
LOG_COMM
|
||||||
% (
|
% (
|
||||||
@@ -76,12 +76,12 @@ def send_faq(message: types.Message):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
markup = types.InlineKeyboardMarkup([[FAQ]], 1)
|
markup = types.InlineKeyboardMarkup([[FAQ]], 1)
|
||||||
send_or_reply(message, "...", reply_markup=markup)
|
await send_or_reply(message, "...", reply_markup=markup)
|
||||||
bot.delete_message(message.chat.id, message.id)
|
await bot.delete_message(message.chat.id, message.id)
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(commands=["lib", "library", "books", "книги", "библиотека"])
|
@bot.message_handler(commands=["lib", "library", "books", "книги", "библиотека"])
|
||||||
def send_lib(message: types.Message):
|
async def send_lib(message: types.Message):
|
||||||
logging.info(
|
logging.info(
|
||||||
LOG_COMM
|
LOG_COMM
|
||||||
% (
|
% (
|
||||||
@@ -92,12 +92,12 @@ def send_lib(message: types.Message):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
markup = types.InlineKeyboardMarkup([[LIB]], 1)
|
markup = types.InlineKeyboardMarkup([[LIB]], 1)
|
||||||
send_or_reply(message, "...", reply_markup=markup)
|
await send_or_reply(message, "...", reply_markup=markup)
|
||||||
bot.delete_message(message.chat.id, message.id)
|
await bot.delete_message(message.chat.id, message.id)
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(commands=["lutz", "лутц"])
|
@bot.message_handler(commands=["lutz", "лутц"])
|
||||||
def send_lutz(message: types.Message):
|
async def send_lutz(message: types.Message):
|
||||||
logging.info(
|
logging.info(
|
||||||
LOG_COMM
|
LOG_COMM
|
||||||
% (
|
% (
|
||||||
@@ -107,16 +107,16 @@ def send_lutz(message: types.Message):
|
|||||||
message.text,
|
message.text,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
bot.send_document(
|
await bot.send_document(
|
||||||
message.chat.id,
|
message.chat.id,
|
||||||
document="BQACAgQAAxkBAAPBYsWJG9Ml0fPrnbU9UyzTQiQSuHkAAjkDAAIstCxSkuRbXAlcqeQpBA",
|
document="BQACAgQAAxkBAAPBYsWJG9Ml0fPrnbU9UyzTQiQSuHkAAjkDAAIstCxSkuRbXAlcqeQpBA",
|
||||||
caption="вот, не позорься",
|
caption="вот, не позорься",
|
||||||
)
|
)
|
||||||
bot.delete_message(message.chat.id, message.id)
|
await bot.delete_message(message.chat.id, message.id)
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(commands=["bdmtss", "бдмтсс"])
|
@bot.message_handler(commands=["bdmtss", "бдмтсс"])
|
||||||
def send_bdmtss_audio(message: types.Message):
|
async def send_bdmtss_audio(message: types.Message):
|
||||||
logging.info(
|
logging.info(
|
||||||
LOG_COMM
|
LOG_COMM
|
||||||
% (
|
% (
|
||||||
@@ -126,15 +126,15 @@ def send_bdmtss_audio(message: types.Message):
|
|||||||
message.text,
|
message.text,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
bot.send_voice(
|
await bot.send_voice(
|
||||||
message.chat.id,
|
message.chat.id,
|
||||||
"AwACAgIAAxkBAAIJrWOg2WUvLwrf7ahyJxQHB8_nqllwAAL5JQAC2_IJSbhfQIO5YnVmLAQ",
|
"AwACAgIAAxkBAAIJrWOg2WUvLwrf7ahyJxQHB8_nqllwAAL5JQAC2_IJSbhfQIO5YnVmLAQ",
|
||||||
)
|
)
|
||||||
bot.delete_message(message.chat.id, message.id)
|
await bot.delete_message(message.chat.id, message.id)
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(commands=["tr", "тр"])
|
@bot.message_handler(commands=["tr", "тр"])
|
||||||
def translate_layout(message: types.Message):
|
async def translate_layout(message: types.Message):
|
||||||
logging.info(
|
logging.info(
|
||||||
LOG_COMM
|
LOG_COMM
|
||||||
% (
|
% (
|
||||||
@@ -146,17 +146,13 @@ def translate_layout(message: types.Message):
|
|||||||
)
|
)
|
||||||
if message.reply_to_message and message.reply_to_message.text:
|
if message.reply_to_message and message.reply_to_message.text:
|
||||||
if message.reply_to_message.text[0] in RUS:
|
if message.reply_to_message.text[0] in RUS:
|
||||||
bot.send_message(
|
await bot.send_message(message.chat.id, message.reply_to_message.text.translate(RUS_ENG_TABLE))
|
||||||
message.chat.id, message.reply_to_message.text.translate(RUS_ENG_TABLE)
|
|
||||||
)
|
|
||||||
else:
|
else:
|
||||||
bot.send_message(
|
await bot.send_message(message.chat.id, message.reply_to_message.text.translate(ENG_RUS_TABLE))
|
||||||
message.chat.id, message.reply_to_message.text.translate(ENG_RUS_TABLE)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(commands=["quote", "цитата"])
|
@bot.message_handler(commands=["quote", "цитата"])
|
||||||
def stan_speak(message: types.Message):
|
async def stan_speak(message: types.Message):
|
||||||
logging.info(
|
logging.info(
|
||||||
LOG_COMM
|
LOG_COMM
|
||||||
% (
|
% (
|
||||||
@@ -166,12 +162,12 @@ def stan_speak(message: types.Message):
|
|||||||
message.text,
|
message.text,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
bot.send_message(message.chat.id, stan.speak(0, message.chat.id))
|
await bot.send_message(message.chat.id, stan.speak(0, message.chat.id))
|
||||||
bot.delete_message(message.chat.id, message.id)
|
await bot.delete_message(message.chat.id, message.id)
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(commands=["tsya", "тся", "ться"])
|
@bot.message_handler(commands=["tsya", "тся", "ться"])
|
||||||
def send_tsya(message: types.Message):
|
async def send_tsya(message: types.Message):
|
||||||
logging.info(
|
logging.info(
|
||||||
LOG_COMM
|
LOG_COMM
|
||||||
% (
|
% (
|
||||||
@@ -186,12 +182,12 @@ def send_tsya(message: types.Message):
|
|||||||
types.InlineKeyboardButton("🧑🏼🎓 Читать правило", url="https://tsya.ru/"),
|
types.InlineKeyboardButton("🧑🏼🎓 Читать правило", url="https://tsya.ru/"),
|
||||||
row_width=1,
|
row_width=1,
|
||||||
)
|
)
|
||||||
send_or_reply(message, "<i>-тся</i> и <i>-ться</i> в глаголах", reply_markup=markup)
|
await send_or_reply(message, "<i>-тся</i> и <i>-ться</i> в глаголах", reply_markup=markup)
|
||||||
bot.delete_message(message.chat.id, message.id)
|
await bot.delete_message(message.chat.id, message.id)
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(commands=["nometa", "номета"])
|
@bot.message_handler(commands=["nometa", "номета"])
|
||||||
def send_nometa(message: types.Message):
|
async def send_nometa(message: types.Message):
|
||||||
logging.info(
|
logging.info(
|
||||||
LOG_COMM
|
LOG_COMM
|
||||||
% (
|
% (
|
||||||
@@ -206,7 +202,7 @@ def send_nometa(message: types.Message):
|
|||||||
types.InlineKeyboardButton("❓ nometa.xyz", url="https://nometa.xyz/ru.html"),
|
types.InlineKeyboardButton("❓ nometa.xyz", url="https://nometa.xyz/ru.html"),
|
||||||
row_width=1,
|
row_width=1,
|
||||||
)
|
)
|
||||||
send_or_reply(
|
await send_or_reply(
|
||||||
message,
|
message,
|
||||||
"""Не задавай мета-вопросов вроде:
|
"""Не задавай мета-вопросов вроде:
|
||||||
<i> «Можно задать вопрос?»
|
<i> «Можно задать вопрос?»
|
||||||
@@ -216,11 +212,11 @@ def send_nometa(message: types.Message):
|
|||||||
Просто спроси сразу! И чем лучше объяснишь проблему, тем вероятнее получишь помощь.""",
|
Просто спроси сразу! И чем лучше объяснишь проблему, тем вероятнее получишь помощь.""",
|
||||||
reply_markup=markup,
|
reply_markup=markup,
|
||||||
)
|
)
|
||||||
bot.delete_message(message.chat.id, message.id)
|
await bot.delete_message(message.chat.id, message.id)
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(commands=["neprivet", "непривет"])
|
@bot.message_handler(commands=["neprivet", "непривет"])
|
||||||
def send_neprivet(message: types.Message):
|
async def send_neprivet(message: types.Message):
|
||||||
logging.info(
|
logging.info(
|
||||||
LOG_COMM
|
LOG_COMM
|
||||||
% (
|
% (
|
||||||
@@ -235,44 +231,44 @@ def send_neprivet(message: types.Message):
|
|||||||
types.InlineKeyboardButton("👋 Непривет", url="https://neprivet.com/"),
|
types.InlineKeyboardButton("👋 Непривет", url="https://neprivet.com/"),
|
||||||
row_width=1,
|
row_width=1,
|
||||||
)
|
)
|
||||||
send_or_reply(
|
await send_or_reply(
|
||||||
message, "Пожалуйста, не пишите просто «Привет» в чате.", reply_markup=markup
|
message, "Пожалуйста, не пишите просто «Привет» в чате.", reply_markup=markup
|
||||||
)
|
)
|
||||||
bot.delete_message(message.chat.id, message.id)
|
await bot.delete_message(message.chat.id, message.id)
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(commands=["nojob", "ноджоб"])
|
@bot.message_handler(commands=["nojob", "ноджоб"])
|
||||||
def send_nojob(message):
|
async def send_nojob(message):
|
||||||
answer = """Мы здесь не для того, чтобы за тебя решать задачи.
|
answer = """Мы здесь не для того, чтобы за тебя решать задачи.
|
||||||
|
|
||||||
Здесь помогают по конкретным вопросам в <u>ТВОЁМ</u> коде, поэтому тебе нужно показать код, который ты написал сам и \
|
Здесь помогают по конкретным вопросам в <u>ТВОЁМ</u> коде, поэтому тебе нужно показать код, который ты написал сам и \
|
||||||
объяснить где и почему застрял... всё просто. 🤷🏼️"""
|
объяснить где и почему застрял... всё просто. 🤷🏼️"""
|
||||||
send_or_reply(message, answer)
|
await send_or_reply(message, answer)
|
||||||
bot.delete_message(message.chat.id, message.id)
|
await bot.delete_message(message.chat.id, message.id)
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(commands=["nobot", "нобот"])
|
@bot.message_handler(commands=["nobot", "нобот"])
|
||||||
def nobot(message: types.Message):
|
async def nobot(message: types.Message):
|
||||||
answer = """<b>Внимание</b>:
|
answer = """<b>Внимание</b>:
|
||||||
Телеграм бот <i>не должен</i> быть твоим первым проектом на Python. Пожалуйста, изучи <code>основы Python</code>, \
|
Телеграм бот <i>не должен</i> быть твоим первым проектом на Python. Пожалуйста, изучи <code>основы Python</code>, \
|
||||||
<code>работу с модулями</code>, <code>основы веб-технологий</code>, <code>асинхронное программирование</code> и \
|
<code>работу с модулями</code>, <code>основы веб-технологий</code>, <code>асинхронное программирование</code> и \
|
||||||
<code>отладку</code> до начала работы с Телеграм ботами. Существует много ресурсов для этого в интернете."""
|
<code>отладку</code> до начала работы с Телеграм ботами. Существует много ресурсов для этого в интернете."""
|
||||||
send_or_reply(message, answer)
|
await send_or_reply(message, answer)
|
||||||
bot.delete_message(message.chat.id, message.id)
|
await bot.delete_message(message.chat.id, message.id)
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(commands=["nogui", "ногуи"])
|
@bot.message_handler(commands=["nogui", "ногуи"])
|
||||||
def nogui(message: types.Message):
|
async def nogui(message: types.Message):
|
||||||
answer = """<b>Внимание</b>:
|
answer = """<b>Внимание</b>:
|
||||||
GUI приложение <i>не должно</i> быть твоим первым проектом на Python. Пожалуйста, изучи <code>основы Python</code>, \
|
GUI приложение <i>не должно</i> быть твоим первым проектом на Python. Пожалуйста, изучи <code>основы Python</code>, \
|
||||||
<code>работу с модулями</code>, <code>циклы событий</code> и <code>отладку</code> до начала работы с какими-либо \
|
<code>работу с модулями</code>, <code>циклы событий</code> и <code>отладку</code> до начала работы с какими-либо \
|
||||||
GUI-фреймворками. Существует много ресурсов для этого в интернете."""
|
GUI-фреймворками. Существует много ресурсов для этого в интернете."""
|
||||||
send_or_reply(message, answer)
|
await send_or_reply(message, answer)
|
||||||
bot.delete_message(message.chat.id, message.id)
|
await bot.delete_message(message.chat.id, message.id)
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(commands=["g", "г"])
|
@bot.message_handler(commands=["g", "г"])
|
||||||
def google_it(message: types.Message):
|
async def google_it(message: types.Message):
|
||||||
"""Google it!"""
|
"""Google it!"""
|
||||||
logging.info(
|
logging.info(
|
||||||
LOG_COMM
|
LOG_COMM
|
||||||
@@ -288,17 +284,17 @@ def google_it(message: types.Message):
|
|||||||
|
|
||||||
markup = types.InlineKeyboardMarkup()
|
markup = types.InlineKeyboardMarkup()
|
||||||
markup.add(types.InlineKeyboardButton("🔍 Google Поиск", url=get_query), row_width=1)
|
markup.add(types.InlineKeyboardButton("🔍 Google Поиск", url=get_query), row_width=1)
|
||||||
send_or_reply(message, f"<i>Ищем «{query}»...</i>", reply_markup=markup)
|
await send_or_reply(message, f"<i>Ищем «{query}»...</i>", reply_markup=markup)
|
||||||
|
|
||||||
|
|
||||||
""" [ ADMIN PANEL ] """
|
""" [ ADMIN PANEL ] """
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(func=is_admin, commands=["ddel"])
|
@bot.message_handler(func=is_admin, commands=["ddel"])
|
||||||
def delete_user(message: types.Message):
|
async def delete_user(message: types.Message):
|
||||||
if message.reply_to_message:
|
if message.reply_to_message:
|
||||||
bot.delete_message(message.chat.id, message.id)
|
await bot.delete_message(message.chat.id, message.id)
|
||||||
bot.delete_message(message.chat.id, message.reply_to_message.id)
|
await bot.delete_message(message.chat.id, message.reply_to_message.id)
|
||||||
logging.info(
|
logging.info(
|
||||||
"!DEL!M "
|
"!DEL!M "
|
||||||
+ LOG_COMM
|
+ LOG_COMM
|
||||||
@@ -312,11 +308,11 @@ def delete_user(message: types.Message):
|
|||||||
|
|
||||||
|
|
||||||
@bot.message_handler(func=is_admin, commands=["bban"])
|
@bot.message_handler(func=is_admin, commands=["bban"])
|
||||||
def ban_user(message: types.Message):
|
async def ban_user(message: types.Message):
|
||||||
if message.reply_to_message:
|
if message.reply_to_message:
|
||||||
bot.delete_message(message.chat.id, message.id)
|
await bot.delete_message(message.chat.id, message.id)
|
||||||
bot.delete_message(message.chat.id, message.reply_to_message.id)
|
await bot.delete_message(message.chat.id, message.reply_to_message.id)
|
||||||
bot.ban_chat_member(message.chat.id, message.reply_to_message.from_user.id)
|
await bot.ban_chat_member(message.chat.id, message.reply_to_message.from_user.id)
|
||||||
logging.info(
|
logging.info(
|
||||||
f"!BAN!M "
|
f"!BAN!M "
|
||||||
+ LOG_COMM
|
+ LOG_COMM
|
||||||
@@ -330,10 +326,10 @@ def ban_user(message: types.Message):
|
|||||||
|
|
||||||
|
|
||||||
@bot.message_handler(func=is_admin, commands=["unban_id"])
|
@bot.message_handler(func=is_admin, commands=["unban_id"])
|
||||||
def unban_user(message: types.Message):
|
async def unban_user(message: types.Message):
|
||||||
if message.text.split()[-1].isdigit():
|
if message.text.split()[-1].isdigit():
|
||||||
user_id = int(message.text.split()[-1])
|
user_id = int(message.text.split()[-1])
|
||||||
bot.unban_chat_member(PYTHONCHATRU, user_id)
|
await bot.unban_chat_member(PYTHONCHATRU, user_id)
|
||||||
logging.info(f"!UNBAN (M)! {user_id}")
|
logging.info(f"!UNBAN (M)! {user_id}")
|
||||||
|
|
||||||
|
|
||||||
@@ -341,7 +337,7 @@ def unban_user(message: types.Message):
|
|||||||
|
|
||||||
|
|
||||||
@bot.inline_handler(lambda query: True)
|
@bot.inline_handler(lambda query: True)
|
||||||
def default_query(inline_query):
|
async def default_query(inline_query):
|
||||||
"""Inline the Zen of Python."""
|
"""Inline the Zen of Python."""
|
||||||
zen = []
|
zen = []
|
||||||
for id_p, phrase in enumerate(ZEN):
|
for id_p, phrase in enumerate(ZEN):
|
||||||
@@ -356,7 +352,7 @@ def default_query(inline_query):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
bot.answer_inline_query(inline_query.id, zen, cache_time=1200)
|
await bot.answer_inline_query(inline_query.id, zen, cache_time=1200)
|
||||||
|
|
||||||
|
|
||||||
""" [ COUNTER ] """
|
""" [ COUNTER ] """
|
||||||
@@ -384,10 +380,10 @@ def handle_msg(message: types.Message):
|
|||||||
|
|
||||||
|
|
||||||
@app.post(f"/bot{TOKEN}/")
|
@app.post(f"/bot{TOKEN}/")
|
||||||
def webhook(update: dict):
|
async def webhook(update: dict):
|
||||||
"""Parse POST requests from Telegram."""
|
"""Parse POST requests from Telegram."""
|
||||||
if update:
|
if update:
|
||||||
update = telebot.types.Update.de_json(update)
|
update = telebot.types.Update.de_json(update)
|
||||||
bot.process_new_updates([update])
|
await bot.process_new_updates([update])
|
||||||
else:
|
else:
|
||||||
return
|
return
|
||||||
|
|||||||
+27
-63
@@ -44,36 +44,30 @@ def remind_manually(message):
|
|||||||
|
|
||||||
|
|
||||||
@bot.message_handler(func=is_admin, commands=["jobs"])
|
@bot.message_handler(func=is_admin, commands=["jobs"])
|
||||||
def list_jobs(message):
|
async def list_jobs(message):
|
||||||
"""List all the jobs in schedule."""
|
"""List all the jobs in schedule."""
|
||||||
bot.send_message(ADMIN_ID, reminder.print_get_jobs())
|
await bot.send_message(ADMIN_ID, reminder.print_get_jobs())
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(func=is_admin, commands=["stats"])
|
@bot.message_handler(func=is_admin, commands=["stats"])
|
||||||
def send_stats(message: types.Message):
|
async def send_stats(message: types.Message):
|
||||||
if len(message.text.split()) == 1:
|
if len(message.text.split()) == 1:
|
||||||
rep = report.create_report_text(message.chat.id)
|
rep = report.create_report_text(message.chat.id)
|
||||||
if rep:
|
if rep:
|
||||||
bot.send_message(message.chat.id, rep)
|
await bot.send_message(message.chat.id, rep)
|
||||||
else:
|
else:
|
||||||
bot.send_message(
|
await bot.send_message(message.chat.id, report.create_report_text(message.text.split()[-1]))
|
||||||
message.chat.id, report.create_report_text(message.text.split()[-1])
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(
|
@bot.message_handler(func=is_admin, commands=["reset_stats"], chat_types=["supergroup", "group"])
|
||||||
func=is_admin, commands=["reset_stats"], chat_types=["supergroup", "group"]
|
async def send_stats(message: types.Message):
|
||||||
)
|
|
||||||
def send_stats(message: types.Message):
|
|
||||||
logging.warning("reset_stats")
|
logging.warning("reset_stats")
|
||||||
report.reset_report_stats(message.chat.id)
|
report.reset_report_stats(message.chat.id)
|
||||||
bot.send_message(message.chat.id, report.reset_report_stats(message.chat.id))
|
await bot.send_message(message.chat.id, report.reset_report_stats(message.chat.id))
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(
|
@bot.message_handler(func=is_white, commands=["enable_stan"], chat_types=["supergroup", "group"])
|
||||||
func=is_white, commands=["enable_stan"], chat_types=["supergroup", "group"]
|
async def enable_stan(message: types.Message):
|
||||||
)
|
|
||||||
def enable_stan(message: types.Message):
|
|
||||||
"""Add group to database."""
|
"""Add group to database."""
|
||||||
|
|
||||||
logging.info(
|
logging.info(
|
||||||
@@ -90,32 +84,28 @@ def enable_stan(message: types.Message):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
session.commit()
|
session.commit()
|
||||||
bot.send_message(
|
await bot.send_message(
|
||||||
message.chat.id,
|
message.chat.id,
|
||||||
f"""Группа "{message.chat.title} добавлена в БД.
|
f"""Группа "{message.chat.title} добавлена в БД.
|
||||||
/get_group_info - узнать текущие настройки""",
|
/get_group_info - узнать текущие настройки""",
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
bot.send_message(message.chat.id, "Отказ. Группа уже включена")
|
await bot.send_message(message.chat.id, "Отказ. Группа уже включена")
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(
|
@bot.message_handler(func=is_admin, commands=["disable_stan"], chat_types=["supergroup", "group"])
|
||||||
func=is_admin, commands=["disable_stan"], chat_types=["supergroup", "group"]
|
async def disable_stan(message: types.Message):
|
||||||
)
|
logging.info(f"[{message.chat.title}] [{message.from_user.id}] {message.from_user.username}: {message.text}")
|
||||||
def disable_stan(message: types.Message):
|
|
||||||
logging.info(
|
|
||||||
f"[{message.chat.title}] [{message.from_user.id}] {message.from_user.username}: {message.text}"
|
|
||||||
)
|
|
||||||
if session.query(Chat.id).filter(Chat.chat_id == message.chat.id).first():
|
if session.query(Chat.id).filter(Chat.chat_id == message.chat.id).first():
|
||||||
chat = session.query(Chat).filter_by(chat_id=message.chat.id).first()
|
chat = session.query(Chat).filter_by(chat_id=message.chat.id).first()
|
||||||
session.delete(chat)
|
session.delete(chat)
|
||||||
session.commit()
|
session.commit()
|
||||||
bot.send_message(
|
await bot.send_message(
|
||||||
message.chat.id,
|
message.chat.id,
|
||||||
f"Группа {message.chat.title} и все связанные с ней цитаты удалёны!",
|
f"Группа {message.chat.title} и все связанные с ней цитаты удалёны!",
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
bot.send_message(message.chat.id, "Отказ. Этой группы нет в БД.")
|
await bot.send_message(message.chat.id, "Отказ. Этой группы нет в БД.")
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(
|
@bot.message_handler(
|
||||||
@@ -123,7 +113,7 @@ def disable_stan(message: types.Message):
|
|||||||
commands=["set_antispam_report_reminder", "set_rules"],
|
commands=["set_antispam_report_reminder", "set_rules"],
|
||||||
chat_types=["supergroup", "group"],
|
chat_types=["supergroup", "group"],
|
||||||
)
|
)
|
||||||
def set_antispam_report_reminder(message: types.Message):
|
async def set_antispam_report_reminder(message: types.Message):
|
||||||
args = message.text.split()
|
args = message.text.split()
|
||||||
if len(args) == 4:
|
if len(args) == 4:
|
||||||
try:
|
try:
|
||||||
@@ -137,36 +127,31 @@ def set_antispam_report_reminder(message: types.Message):
|
|||||||
{"antispam": antispam, "report": rep, "reminder": rem}
|
{"antispam": antispam, "report": rep, "reminder": rem}
|
||||||
)
|
)
|
||||||
session.commit()
|
session.commit()
|
||||||
|
await bot.send_message(message.chat.id, f"""Настройки обновлены. Проверить: /get_group_info""")
|
||||||
bot.send_message(
|
|
||||||
message.chat.id, f"""Настройки обновлены. Проверить: /get_group_info"""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(
|
@bot.message_handler(
|
||||||
func=is_white, commands=["get_quotes"], chat_types=["supergroup", "group"]
|
func=is_white, commands=["get_quotes"], chat_types=["supergroup", "group"]
|
||||||
)
|
)
|
||||||
def get_quotes(message: types.Message):
|
async def get_quotes(message: types.Message):
|
||||||
logging.info(f"[{message.chat.id}] {message.from_user.first_name} {message.text}.")
|
logging.info(f"[{message.chat.id}] {message.from_user.first_name} {message.text}.")
|
||||||
quotes = session.query(Quote.text).filter(Quote.chat_id == message.chat.id).all()
|
quotes = session.query(Quote.text).filter(Quote.chat_id == message.chat.id).all()
|
||||||
if quotes:
|
if quotes:
|
||||||
text = f"Количество цитат: {len(session.query(Quote).filter(Quote.chat_id == message.chat.id).all())}\n\
|
text = f"Количество цитат: {len(session.query(Quote).filter(Quote.chat_id == message.chat.id).all())}\n\
|
||||||
Последние добавленные\n\n"
|
Последние добавленные\n\n"
|
||||||
text += "\n".join(f"· {quote[0]}" for quote in quotes[-10:])
|
text += "\n".join(f"· {quote[0]}" for quote in quotes[-10:])
|
||||||
bot.send_message(message.chat.id, f"{text}")
|
await bot.send_message(message.chat.id, f"{text}")
|
||||||
else:
|
else:
|
||||||
bot.send_message(
|
await bot.send_message(
|
||||||
message.chat.id, f"Цитаты отсутствуют. Подробнее: /get_group_info"
|
message.chat.id, f"Цитаты отсутствуют. Подробнее: /get_group_info"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(
|
@bot.message_handler(func=is_white, commands=["get_group_info"], chat_types=["supergroup", "group"])
|
||||||
func=is_white, commands=["get_group_info"], chat_types=["supergroup", "group"]
|
async def get_group_info(message: types.Message):
|
||||||
)
|
|
||||||
def get_group_info(message: types.Message):
|
|
||||||
group = session.query(Chat).filter(Chat.chat_id == message.chat.id).first()
|
group = session.query(Chat).filter(Chat.chat_id == message.chat.id).first()
|
||||||
if group:
|
if group:
|
||||||
bot.send_message(
|
await bot.send_message(
|
||||||
message.chat.id,
|
message.chat.id,
|
||||||
f"""Группа: {group.title}
|
f"""Группа: {group.title}
|
||||||
ID группы: {group.chat_id}
|
ID группы: {group.chat_id}
|
||||||
@@ -180,11 +165,11 @@ ID группы: {group.chat_id}
|
|||||||
Праздники: {group.reminder}""",
|
Праздники: {group.reminder}""",
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
bot.send_message(message.chat.id, f"Группа не включена. Включить: /enable_stan")
|
await bot.send_message(message.chat.id, f"Группа не включена. Включить: /enable_stan")
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(func=is_white, commands=["set_logging_level"], chat_types=["supergroup", "group"])
|
@bot.message_handler(func=is_white, commands=["set_logging_level"], chat_types=["supergroup", "group"])
|
||||||
def set_logging_level(message: types.Message):
|
async def set_logging_level(message: types.Message):
|
||||||
args = message.text.split()
|
args = message.text.split()
|
||||||
if args[-1] == '10':
|
if args[-1] == '10':
|
||||||
logger.setLevel(10) # DEBUG
|
logger.setLevel(10) # DEBUG
|
||||||
@@ -192,24 +177,3 @@ def set_logging_level(message: types.Message):
|
|||||||
else:
|
else:
|
||||||
logger.setLevel(20) # INFO
|
logger.setLevel(20) # INFO
|
||||||
logging.info("[LEVEL] Установлен уровень INFO")
|
logging.info("[LEVEL] Установлен уровень INFO")
|
||||||
|
|
||||||
|
|
||||||
# @bot.message_handler(func=is_admin, commands=["promote"], chat_types=["supergroup", "group"])
|
|
||||||
# def promote_user(message: types.Message):
|
|
||||||
# if message.reply_to_message:
|
|
||||||
# user = message.reply_to_message.from_user
|
|
||||||
#
|
|
||||||
# user_db = session.query(User).filter_by(tg_id=user.id)
|
|
||||||
# if not user_db:
|
|
||||||
# permission = 1
|
|
||||||
# session.add(tg_id=user.id,
|
|
||||||
# first_name=user.first_name,
|
|
||||||
# last_name=user.last_name,
|
|
||||||
# username=user.username,
|
|
||||||
# permissions=permission)
|
|
||||||
# else:
|
|
||||||
# permission = user_db.permission * 2
|
|
||||||
# user_db.update(permissions=permission)
|
|
||||||
# session.commit()
|
|
||||||
#
|
|
||||||
# logger.info(f'[{user.first_name} {user.last_name}] повышен до {permission}.')
|
|
||||||
+25
-24
@@ -4,7 +4,8 @@ import logging
|
|||||||
|
|
||||||
import telebot.types
|
import telebot.types
|
||||||
from fastapi import FastAPI
|
from fastapi import FastAPI
|
||||||
from telebot import TeleBot, logger, types
|
from telebot.async_telebot import AsyncTeleBot
|
||||||
|
from telebot import logger, types
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
logging.basicConfig(
|
logging.basicConfig(
|
||||||
@@ -20,7 +21,7 @@ TOKEN = os.environ.get("LUTZPYBOT")
|
|||||||
if not TOKEN:
|
if not TOKEN:
|
||||||
raise LookupError("LUTZPYBOT (token) has not been found in .env")
|
raise LookupError("LUTZPYBOT (token) has not been found in .env")
|
||||||
|
|
||||||
bot = TeleBot(
|
bot = AsyncTeleBot(
|
||||||
TOKEN,
|
TOKEN,
|
||||||
"HTML",
|
"HTML",
|
||||||
disable_web_page_preview=True,
|
disable_web_page_preview=True,
|
||||||
@@ -108,25 +109,25 @@ ZEN = [
|
|||||||
"Namespaces are one honking great idea — let's do more of those!",
|
"Namespaces are one honking great idea — let's do more of those!",
|
||||||
]
|
]
|
||||||
|
|
||||||
for white_id in WHITEIDS:
|
# for white_id in WHITEIDS:
|
||||||
bot.set_my_commands(
|
# bot.set_my_commands(
|
||||||
commands=[
|
# commands=[
|
||||||
telebot.types.BotCommand("nobot", "/нобот Телебот не должен быть первым проектом"),
|
# telebot.types.BotCommand("nobot", "/нобот Телебот не должен быть первым проектом"),
|
||||||
telebot.types.BotCommand("nogui", "/ногуи GUI приложение не должно быть первым проектом"),
|
# telebot.types.BotCommand("nogui", "/ногуи GUI приложение не должно быть первым проектом"),
|
||||||
telebot.types.BotCommand("nojob", "/ноджоб, Мы здесь не для того чтобы за тебя решать задачи"),
|
# telebot.types.BotCommand("nojob", "/ноджоб, Мы здесь не для того чтобы за тебя решать задачи"),
|
||||||
telebot.types.BotCommand("nometa", "/номета Не задавайте мета-вопросов"),
|
# telebot.types.BotCommand("nometa", "/номета Не задавайте мета-вопросов"),
|
||||||
telebot.types.BotCommand("neprivet", "/непривет"),
|
# telebot.types.BotCommand("neprivet", "/непривет"),
|
||||||
telebot.types.BotCommand("quote", "/цитата Случайная цитата"),
|
# telebot.types.BotCommand("quote", "/цитата Случайная цитата"),
|
||||||
telebot.types.BotCommand("lutz", "/лутц Прислать книгу Learning Python"),
|
# telebot.types.BotCommand("lutz", "/лутц Прислать книгу Learning Python"),
|
||||||
telebot.types.BotCommand("bdmtss", "/бдмтсс Римшот"),
|
# telebot.types.BotCommand("bdmtss", "/бдмтсс Римшот"),
|
||||||
telebot.types.BotCommand("g", "/г Загуглить (аргументы или цитируемое)"),
|
# telebot.types.BotCommand("g", "/г Загуглить (аргументы или цитируемое)"),
|
||||||
telebot.types.BotCommand("rules", "/правила чата (работает с аргументом-номером пункта)"),
|
# telebot.types.BotCommand("rules", "/правила чата (работает с аргументом-номером пункта)"),
|
||||||
telebot.types.BotCommand("faq", "/чзв Частые вопросы"),
|
# telebot.types.BotCommand("faq", "/чзв Частые вопросы"),
|
||||||
telebot.types.BotCommand("books", "/библиотека питониста"),
|
# telebot.types.BotCommand("books", "/библиотека питониста"),
|
||||||
telebot.types.BotCommand("links", "/ссылки на правила, чзв и библиотеку"),
|
# telebot.types.BotCommand("links", "/ссылки на правила, чзв и библиотеку"),
|
||||||
telebot.types.BotCommand("tsya", "/тся и /ться"),
|
# telebot.types.BotCommand("tsya", "/тся и /ться"),
|
||||||
telebot.types.BotCommand("add", "добавить цитату [Whitelist]"),
|
# telebot.types.BotCommand("add", "добавить цитату [Whitelist]"),
|
||||||
telebot.types.BotCommand("remove", "удалить цитату [Whitelist]"),
|
# telebot.types.BotCommand("remove", "удалить цитату [Whitelist]"),
|
||||||
],
|
# ],
|
||||||
scope=telebot.types.BotCommandScopeChatMember(PYTHONCHATRU, white_id)
|
# scope=telebot.types.BotCommandScopeChatMember(PYTHONCHATRU, white_id)
|
||||||
)
|
# )
|
||||||
|
|||||||
+3
-3
@@ -68,8 +68,8 @@ def is_white(message: types.Message) -> bool:
|
|||||||
return message.from_user.id in WHITEIDS
|
return message.from_user.id in WHITEIDS
|
||||||
|
|
||||||
|
|
||||||
def send_or_reply(m: types.Message, answer, **kwargs):
|
async def send_or_reply(m: types.Message, answer, **kwargs):
|
||||||
if m.reply_to_message:
|
if m.reply_to_message:
|
||||||
bot.reply_to(m.reply_to_message, answer, **kwargs)
|
await bot.reply_to(m.reply_to_message, answer, **kwargs)
|
||||||
else:
|
else:
|
||||||
bot.send_message(m.chat.id, answer, **kwargs)
|
await bot.send_message(m.chat.id, answer, **kwargs)
|
||||||
|
|||||||
@@ -47,61 +47,3 @@ class Chat(Base):
|
|||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f'Chat({self.chat_id=}, {self.title=})'
|
return f'Chat({self.chat_id=}, {self.title=})'
|
||||||
|
|
||||||
|
|
||||||
# class User(Base):
|
|
||||||
# __tablename__ = "users"
|
|
||||||
# id = Column(Integer, primary_key=True)
|
|
||||||
# tg_id = Column(Integer, unique=True)
|
|
||||||
# first_name = Column(String)
|
|
||||||
# last_name = Column(String)
|
|
||||||
# username = Column(String)
|
|
||||||
# permissions = Column(Integer)
|
|
||||||
#
|
|
||||||
# def __repr__(self):
|
|
||||||
# return f'User({self.first_name} {self.last_name} {self.username})'
|
|
||||||
#
|
|
||||||
# class Role(Base):
|
|
||||||
# __tablename__ = 'roles'
|
|
||||||
# id = Column(Integer, primary_key=True)
|
|
||||||
# name = Column(String(64), unique=True)
|
|
||||||
# default = Column(Boolean, default=False, index=True)
|
|
||||||
# permissions = Column(Integer)
|
|
||||||
# users = relationship('User', backref='role', lazy='dynamic')
|
|
||||||
#
|
|
||||||
# def add_permission(self, perm):
|
|
||||||
# if not self.has_permission(perm):
|
|
||||||
# self.permissions += perm
|
|
||||||
#
|
|
||||||
# def remove_permission(self, perm):
|
|
||||||
# if self.has_permission(perm):
|
|
||||||
# self.permissions -= perm
|
|
||||||
#
|
|
||||||
# def reset_permissions(self):
|
|
||||||
# self.permissions = 0
|
|
||||||
#
|
|
||||||
# def has_permission(self, perm):
|
|
||||||
# return self.permissions & perm == perm
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# @staticmethod
|
|
||||||
# def insert_roles():
|
|
||||||
# roles = {
|
|
||||||
# "User": [Permission.USE_COMMANDS],
|
|
||||||
# "Moderator": [Permission.USE_COMMANDS, Permission.SEND_LINKS,
|
|
||||||
# Permission.MODIFY_QUOTES, Permission.MODERATE],
|
|
||||||
# "Administrator": [Permission.USE_COMMANDS, Permission.SEND_LINKS,
|
|
||||||
# Permission.MODIFY_QUOTES, Permission.MODERATE,
|
|
||||||
# Permission.ADMIN],
|
|
||||||
# }
|
|
||||||
# default_role = 'User'
|
|
||||||
# for r in roles:
|
|
||||||
# role = Role.query.filter_by(name=r).first()
|
|
||||||
# if role is None:
|
|
||||||
# role = Role(name=r)
|
|
||||||
# role.reset_permissions()
|
|
||||||
# for perm in roles[r]:
|
|
||||||
# role.add_permission(perm)
|
|
||||||
# role.default = (role.name == default_role)
|
|
||||||
# session.add(role)
|
|
||||||
# session.commit()
|
|
||||||
+4
-4
@@ -16,7 +16,7 @@ def scheduler():
|
|||||||
|
|
||||||
|
|
||||||
@repeat(every().day.at("07:00"), PYTHONCHATRU, None)
|
@repeat(every().day.at("07:00"), PYTHONCHATRU, None)
|
||||||
def remind(chat_to_repeat, today):
|
async def remind(chat_to_repeat, today):
|
||||||
"""Remind holiday."""
|
"""Remind holiday."""
|
||||||
if not today:
|
if not today:
|
||||||
today = dt.today()
|
today = dt.today()
|
||||||
@@ -33,14 +33,14 @@ def remind(chat_to_repeat, today):
|
|||||||
if date.year != 1000:
|
if date.year != 1000:
|
||||||
age = today.year - date.year
|
age = today.year - date.year
|
||||||
notification += f"\n\n🥳 <i>{age}-ая годовщина</i>"
|
notification += f"\n\n🥳 <i>{age}-ая годовщина</i>"
|
||||||
bot.send_message(chat_to_repeat, notification)
|
await bot.send_message(chat_to_repeat, notification)
|
||||||
|
|
||||||
|
|
||||||
@repeat(every().day.at("06:00"), PYTHONCHATRU)
|
@repeat(every().day.at("06:00"), PYTHONCHATRU)
|
||||||
def stat_report(chat_to_repeat):
|
async def stat_report(chat_to_repeat):
|
||||||
rep = report.create_report_text(PYTHONCHATRU)
|
rep = report.create_report_text(PYTHONCHATRU)
|
||||||
if rep:
|
if rep:
|
||||||
bot.send_message(chat_to_repeat, rep)
|
await bot.send_message(chat_to_repeat, rep)
|
||||||
report.reset_report_stats(PYTHONCHATRU)
|
report.reset_report_stats(PYTHONCHATRU)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+13
-13
@@ -15,15 +15,15 @@ def speak(chance_of, group_id):
|
|||||||
return random.choice([i[0] for i in session.query(Quote.text).filter(Quote.chat_id == group_id).all()])
|
return random.choice([i[0] for i in session.query(Quote.text).filter(Quote.chat_id == group_id).all()])
|
||||||
|
|
||||||
|
|
||||||
def send_quote(after_sec, message, quote):
|
async def send_quote(after_sec, message, quote):
|
||||||
"""Pretend Reading, pretend Typing, send."""
|
"""Pretend Reading, pretend Typing, send."""
|
||||||
if message.text:
|
if message.text:
|
||||||
sleep(
|
sleep(
|
||||||
len(message.text) * 0.13 / 4
|
len(message.text) * 0.13 / 4
|
||||||
) # Reading time is quarter of the same text writing time
|
) # Reading time is quarter of the same text writing time
|
||||||
bot.send_chat_action(message.chat.id, action="typing")
|
await bot.send_chat_action(message.chat.id, action="typing")
|
||||||
sleep(after_sec) # Typing time
|
sleep(after_sec) # Typing time
|
||||||
bot.send_message(message.chat.id, html.escape(quote))
|
await bot.send_message(message.chat.id, html.escape(quote))
|
||||||
|
|
||||||
|
|
||||||
def act(message: types.Message):
|
def act(message: types.Message):
|
||||||
@@ -33,29 +33,29 @@ def act(message: types.Message):
|
|||||||
|
|
||||||
|
|
||||||
@bot.message_handler(func=is_white, commands=["add"])
|
@bot.message_handler(func=is_white, commands=["add"])
|
||||||
def add_stan_quote(message: types.Message):
|
async def add_stan_quote(message: types.Message):
|
||||||
if message.reply_to_message and message.reply_to_message.text:
|
if message.reply_to_message and message.reply_to_message.text:
|
||||||
quote = html.escape(message.reply_to_message.text)
|
quote = html.escape(message.reply_to_message.text)
|
||||||
if quote not in [i[0] for i in session.query(Quote.text).filter(
|
if quote not in [i[0] for i in session.query(Quote.text).filter(
|
||||||
Quote.chat_id == message.chat.id).all()]:
|
Quote.chat_id == message.chat.id).all()]:
|
||||||
session.add(Quote(chat_id=message.chat.id, text=quote.replace("\n", " ")))
|
session.add(Quote(chat_id=message.chat.id, text=quote.replace("\n", " ")))
|
||||||
session.commit()
|
session.commit()
|
||||||
bot.send_message(
|
await bot.send_message(
|
||||||
message.chat.id,
|
message.chat.id,
|
||||||
"✅ <b>Добавил</b>\n └ <i>"
|
"✅ <b>Добавил</b>\n └ <i>"
|
||||||
+ quote.replace("\n", " ")
|
+ quote.replace("\n", " ")
|
||||||
+ "</i>",
|
+ "</i>",
|
||||||
)
|
)
|
||||||
bot.delete_message(message.chat.id, message.id)
|
await bot.delete_message(message.chat.id, message.id)
|
||||||
else:
|
else:
|
||||||
bot.send_message(
|
await bot.send_message(
|
||||||
message.chat.id,
|
message.chat.id,
|
||||||
f"⛔️ <b>Не добавил</b>, есть токое\n └ <i>{quote}</i>",
|
f"⛔️ <b>Не добавил</b>, есть токое\n └ <i>{quote}</i>",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(func=is_white, commands=["remove"])
|
@bot.message_handler(func=is_white, commands=["remove"])
|
||||||
def remove_stan_quote(message: types.Message):
|
async def remove_stan_quote(message: types.Message):
|
||||||
if message.reply_to_message and message.reply_to_message.text:
|
if message.reply_to_message and message.reply_to_message.text:
|
||||||
|
|
||||||
quote = html.escape(message.reply_to_message.text)
|
quote = html.escape(message.reply_to_message.text)
|
||||||
@@ -65,19 +65,19 @@ def remove_stan_quote(message: types.Message):
|
|||||||
session.delete(already_exist)
|
session.delete(already_exist)
|
||||||
session.commit()
|
session.commit()
|
||||||
|
|
||||||
bot.send_message(
|
await bot.send_message(
|
||||||
message.chat.id,
|
message.chat.id,
|
||||||
f"✅ <b>Удалил</b>\n └ <i>{quote}</i>",
|
f"✅ <b>Удалил</b>\n └ <i>{quote}</i>",
|
||||||
)
|
)
|
||||||
bot.delete_message(message.chat.id, message.id)
|
await bot.delete_message(message.chat.id, message.id)
|
||||||
else:
|
else:
|
||||||
bot.send_message(
|
await bot.send_message(
|
||||||
message.chat.id,
|
message.chat.id,
|
||||||
f"⛔️ <b>Нет такого</b>\n └ <i>{quote}</i>",
|
f"⛔️ <b>Нет такого</b>\n └ <i>{quote}</i>",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(func=is_nongrata)
|
@bot.message_handler(func=is_nongrata)
|
||||||
def tease_nongrata(message: types.Message):
|
async def tease_nongrata(message: types.Message):
|
||||||
"""Reply to non grata mentions."""
|
"""Reply to non grata mentions."""
|
||||||
bot.reply_to(message, f"у нас тут таких не любят")
|
await bot.reply_to(message, f"у нас тут таких не любят")
|
||||||
|
|||||||
Reference in New Issue
Block a user