Switch to async!

This commit is contained in:
Rykov7
2023-10-28 18:47:34 +03:00
parent 65e04a36e0
commit 5d179b0de2
7 changed files with 136 additions and 233 deletions
+64 -68
View File
@@ -12,28 +12,28 @@ from .config import *
@bot.edited_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."""
bot.delete_message(message.chat.id, message.id)
bot.ban_chat_member(message.chat.id, message.from_user.id)
await bot.delete_message(message.chat.id, message.id)
await bot.ban_chat_member(message.chat.id, message.from_user.id)
with shelve.open(f"{DATA}{message.chat.id}") as s:
s["Banned"] += 1
@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"""
bot.delete_message(message.chat.id, message.id)
bot.ban_chat_member(message.chat.id, message.from_user.id)
await bot.delete_message(message.chat.id, message.id)
await bot.ban_chat_member(message.chat.id, message.from_user.id)
with shelve.open(f"{DATA}{message.chat.id}") as s:
s["Banned"] += 1
@bot.edited_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."""
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:
s["Deleted"] += 1
@@ -42,30 +42,30 @@ def delete_message(message: types.Message):
@bot.message_handler(commands=["start", "links", "ссылки"])
def start(message: types.Message):
async def start(message: types.Message):
"""What to begin with."""
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)
send_or_reply(message, "Начни с прочтения", reply_markup=markup)
await send_or_reply(message, "Начни с прочтения", reply_markup=markup)
@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)
args = message.text.split()
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]):
send_or_reply(
await send_or_reply(
message,
f"<b>Правило {args[-1]}</b>\n<i>{rules.fetch_rule(args[-1])}</i>",
reply_markup=markup,
)
else:
send_or_reply(message, "...", reply_markup=markup)
await send_or_reply(message, "...", reply_markup=markup)
@bot.message_handler(commands=["faq", "чзв"])
def send_faq(message: types.Message):
async def send_faq(message: types.Message):
logging.info(
LOG_COMM
% (
@@ -76,12 +76,12 @@ def send_faq(message: types.Message):
)
)
markup = types.InlineKeyboardMarkup([[FAQ]], 1)
send_or_reply(message, "...", reply_markup=markup)
bot.delete_message(message.chat.id, message.id)
await send_or_reply(message, "...", reply_markup=markup)
await bot.delete_message(message.chat.id, message.id)
@bot.message_handler(commands=["lib", "library", "books", "книги", "библиотека"])
def send_lib(message: types.Message):
async def send_lib(message: types.Message):
logging.info(
LOG_COMM
% (
@@ -92,12 +92,12 @@ def send_lib(message: types.Message):
)
)
markup = types.InlineKeyboardMarkup([[LIB]], 1)
send_or_reply(message, "...", reply_markup=markup)
bot.delete_message(message.chat.id, message.id)
await send_or_reply(message, "...", reply_markup=markup)
await bot.delete_message(message.chat.id, message.id)
@bot.message_handler(commands=["lutz", "лутц"])
def send_lutz(message: types.Message):
async def send_lutz(message: types.Message):
logging.info(
LOG_COMM
% (
@@ -107,16 +107,16 @@ def send_lutz(message: types.Message):
message.text,
)
)
bot.send_document(
await bot.send_document(
message.chat.id,
document="BQACAgQAAxkBAAPBYsWJG9Ml0fPrnbU9UyzTQiQSuHkAAjkDAAIstCxSkuRbXAlcqeQpBA",
caption="вот, не позорься",
)
bot.delete_message(message.chat.id, message.id)
await bot.delete_message(message.chat.id, message.id)
@bot.message_handler(commands=["bdmtss", "бдмтсс"])
def send_bdmtss_audio(message: types.Message):
async def send_bdmtss_audio(message: types.Message):
logging.info(
LOG_COMM
% (
@@ -126,15 +126,15 @@ def send_bdmtss_audio(message: types.Message):
message.text,
)
)
bot.send_voice(
await bot.send_voice(
message.chat.id,
"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", "тр"])
def translate_layout(message: types.Message):
async def translate_layout(message: types.Message):
logging.info(
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.text[0] in RUS:
bot.send_message(
message.chat.id, message.reply_to_message.text.translate(RUS_ENG_TABLE)
)
await bot.send_message(message.chat.id, message.reply_to_message.text.translate(RUS_ENG_TABLE))
else:
bot.send_message(
message.chat.id, message.reply_to_message.text.translate(ENG_RUS_TABLE)
)
await bot.send_message(message.chat.id, message.reply_to_message.text.translate(ENG_RUS_TABLE))
@bot.message_handler(commands=["quote", "цитата"])
def stan_speak(message: types.Message):
async def stan_speak(message: types.Message):
logging.info(
LOG_COMM
% (
@@ -166,12 +162,12 @@ def stan_speak(message: types.Message):
message.text,
)
)
bot.send_message(message.chat.id, stan.speak(0, message.chat.id))
bot.delete_message(message.chat.id, message.id)
await bot.send_message(message.chat.id, stan.speak(0, message.chat.id))
await bot.delete_message(message.chat.id, message.id)
@bot.message_handler(commands=["tsya", "тся", "ться"])
def send_tsya(message: types.Message):
async def send_tsya(message: types.Message):
logging.info(
LOG_COMM
% (
@@ -186,12 +182,12 @@ def send_tsya(message: types.Message):
types.InlineKeyboardButton("🧑🏼‍🎓 Читать правило", url="https://tsya.ru/"),
row_width=1,
)
send_or_reply(message, "<i>-тся</i> и <i>-ться</i> в глаголах", reply_markup=markup)
bot.delete_message(message.chat.id, message.id)
await send_or_reply(message, "<i>-тся</i> и <i>-ться</i> в глаголах", reply_markup=markup)
await bot.delete_message(message.chat.id, message.id)
@bot.message_handler(commands=["nometa", "номета"])
def send_nometa(message: types.Message):
async def send_nometa(message: types.Message):
logging.info(
LOG_COMM
% (
@@ -206,7 +202,7 @@ def send_nometa(message: types.Message):
types.InlineKeyboardButton("❓ nometa.xyz", url="https://nometa.xyz/ru.html"),
row_width=1,
)
send_or_reply(
await send_or_reply(
message,
"""Не задавай мета-вопросов вроде:
<i> «Можно задать вопрос?»
@@ -216,11 +212,11 @@ def send_nometa(message: types.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=["neprivet", "непривет"])
def send_neprivet(message: types.Message):
async def send_neprivet(message: types.Message):
logging.info(
LOG_COMM
% (
@@ -235,44 +231,44 @@ def send_neprivet(message: types.Message):
types.InlineKeyboardButton("👋 Непривет", url="https://neprivet.com/"),
row_width=1,
)
send_or_reply(
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=["nojob", "ноджоб"])
def send_nojob(message):
async def send_nojob(message):
answer = """Мы здесь не для того, чтобы за тебя решать задачи.
Здесь помогают по конкретным вопросам в <u>ТВОЁМ</u> коде, поэтому тебе нужно показать код, который ты написал сам и \
объяснить где и почему застрял... всё просто. 🤷🏼️"""
send_or_reply(message, answer)
bot.delete_message(message.chat.id, message.id)
await send_or_reply(message, answer)
await bot.delete_message(message.chat.id, message.id)
@bot.message_handler(commands=["nobot", "нобот"])
def nobot(message: types.Message):
async def nobot(message: types.Message):
answer = """<b>Внимание</b>:
Телеграм бот <i>не должен</i> быть твоим первым проектом на Python. Пожалуйста, изучи <code>основы Python</code>, \
<code>работу с модулями</code>, <code>основы веб-технологий</code>, <code>асинхронное программирование</code> и \
<code>отладку</code> до начала работы с Телеграм ботами. Существует много ресурсов для этого в интернете."""
send_or_reply(message, answer)
bot.delete_message(message.chat.id, message.id)
await send_or_reply(message, answer)
await bot.delete_message(message.chat.id, message.id)
@bot.message_handler(commands=["nogui", "ногуи"])
def nogui(message: types.Message):
async def nogui(message: types.Message):
answer = """<b>Внимание</b>:
GUI приложение <i>не должно</i> быть твоим первым проектом на Python. Пожалуйста, изучи <code>основы Python</code>, \
<code>работу с модулями</code>, <code>циклы событий</code> и <code>отладку</code> до начала работы с какими-либо \
GUI-фреймворками. Существует много ресурсов для этого в интернете."""
send_or_reply(message, answer)
bot.delete_message(message.chat.id, message.id)
await send_or_reply(message, answer)
await bot.delete_message(message.chat.id, message.id)
@bot.message_handler(commands=["g", "г"])
def google_it(message: types.Message):
async def google_it(message: types.Message):
"""Google it!"""
logging.info(
LOG_COMM
@@ -288,17 +284,17 @@ def google_it(message: types.Message):
markup = types.InlineKeyboardMarkup()
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 ] """
@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:
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.id)
await bot.delete_message(message.chat.id, message.reply_to_message.id)
logging.info(
"!DEL!M "
+ LOG_COMM
@@ -312,11 +308,11 @@ def delete_user(message: types.Message):
@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:
bot.delete_message(message.chat.id, message.id)
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.delete_message(message.chat.id, message.id)
await bot.delete_message(message.chat.id, message.reply_to_message.id)
await bot.ban_chat_member(message.chat.id, message.reply_to_message.from_user.id)
logging.info(
f"!BAN!M "
+ LOG_COMM
@@ -330,10 +326,10 @@ def ban_user(message: types.Message):
@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():
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}")
@@ -341,7 +337,7 @@ def unban_user(message: types.Message):
@bot.inline_handler(lambda query: True)
def default_query(inline_query):
async def default_query(inline_query):
"""Inline the Zen of Python."""
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 ] """
@@ -384,10 +380,10 @@ def handle_msg(message: types.Message):
@app.post(f"/bot{TOKEN}/")
def webhook(update: dict):
async def webhook(update: dict):
"""Parse POST requests from Telegram."""
if update:
update = telebot.types.Update.de_json(update)
bot.process_new_updates([update])
await bot.process_new_updates([update])
else:
return