/
lucifer39
/
python_Bot
Обзор
Документация
Войти
/
lucifer39
/
python_Bot
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
handlers/link.py
72 строки
3 KB
Ilya Kuprin
поменял структуру приложения
08 май 2025, 14:23
08 май 2025, 14:23
0ca2f2f
Код
Авторство
О чём код?
import logging import aiosqlite import random from environs import Env from handlers.keybord import create_main_keyboard from telebot.types import ReactionTypeEmoji logger = logging.getLogger(__name__) env = Env() env.read_env() DB_NAME = env.str('DB_NAME') async def link_handler_add(bot): @bot.message_handler( func=lambda message: 'https://supchat.taxi.yandex' in message.text) async def link_add(message): link = message.text telegram_id = message.chat.id POSITIVE_REACTIONS = ["🏆", "🎉", "💯", "🍾", "👍"] NEGATIVE_REACTIONS = ['👎', '🤨'] async def send_reaction(reaction_emoji, max_retries=2): for attempt in range(max_retries): try: reaction = [ReactionTypeEmoji(emoji=reaction_emoji)] await bot.set_message_reaction( chat_id=message.chat.id, message_id=message.message_id, reaction=reaction, is_big=False ) return True except Exception as e: if attempt == max_retries - 1: logger.error( f"Failed to send reaction after {max_retries} attempts: {e}") return False continue try: async with aiosqlite.connect(DB_NAME) as db: async with db.cursor() as cursor: # Проверка пользователя await cursor.execute( 'SELECT id FROM users WHERE telegram_id = ?', (telegram_id,)) user = await cursor.fetchone() if not user: await bot.reply_to(message, 'Что-то не так, попробуй зарегистрироваться через /start.') return from database.link_db_add import link_db_add keyboard = create_main_keyboard() user_id = user[0] result_add_link = await link_db_add(db, user_id, link) if result_add_link: await send_reaction(random.choice(POSITIVE_REACTIONS)) else: await send_reaction(random.choice(NEGATIVE_REACTIONS)) await bot.reply_to(message, 'Ссылка уже есть в боте.', reply_markup=keyboard) except Exception as e: logger.error(f"Ошибка: {e}") await bot.reply_to(message, 'Произошла ошибка при обработке запроса.')