代码之家  ›  专栏  ›  技术社区  ›  Nick Vek

Python&Aiogme中电报机器人的问题

  •  0
  • Nick Vek  · 技术社区  · 2 年前

    我对Python中的telegram bot有问题。 PIP=图像。

    我的代码:

    import logging
    from aiogram import Bot, Dispatcher, types
    from aiogram.types import ReplyKeyboardMarkup, KeyboardButton
    
    # Установка токена бота (замените 'YOUR_BOT_TOKEN' на ваш токен)
    TOKEN = 'TOKEN'
    
    # Включаем логгирование
    logging.basicConfig(level=logging.INFO)
    
    # Инициализируем бота и диспетчера
    bot = Bot(token=TOKEN)
    dp = Dispatcher(bot)
    
    # Создаем клавиатуру
    menu_markup = ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
    menu_markup.add(KeyboardButton('Кнопка 1'), KeyboardButton('Кнопка 2'))
    menu_markup.add(KeyboardButton('Кнопка 3'), KeyboardButton('Кнопка 4'))
    menu_markup.add(KeyboardButton('Кнопка 5'), KeyboardButton('Кнопка 6'))
    
    # Обработчик команды /start
    @dp.message_handler(commands=['start'])
    async def start(message: types.Message):
        await message.answer("Привет! Выберите опцию:", reply_markup=menu_markup)
    
    # Обработчик нажатия на кнопку
    @dp.message_handler(lambda message: message.text in ['Кнопка 1', 'Кнопка 2', 'Кнопка 3', 'Кнопка 4', 'Кнопка 5', 'Кнопка 6'])
    async def handle_button_click(message: types.Message):
        # Получаем текст для отправки
        text_to_send = "Текст, который ты хочешь отправить"
    
        # Создаем клавиатуру для "Проверить оплату"
        check_payment_markup = ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
        check_payment_markup.add(KeyboardButton('Проверить Оплату'))
    
        # Отправляем текст и клавиатуру
        await message.answer(text_to_send, reply_markup=check_payment_markup)
    
    # Обработчик нажатия на кнопку "Проверить Оплату"
    @dp.message_handler(lambda message: message.text == 'Проверить Оплату')
    async def check_payment(message: types.Message):
        # Отправляем сообщение о том, что оплата не обнаружена
        await message.answer("Оплата не обнаружена")
    
    if __name__ == '__main__':
        from aiogram import executor
    
        # Запускаем бота
        executor.start_polling(dp, skip_updates=True)
    
    

    我的错误:

    Traceback (most recent call last):
      File "/Volumes/Files/Telega-Bot(lick)/bot.py", line 13, in <module>
        dp = Dispatcher(bot)
             ^^^^^^^^^^^^^^^
    TypeError: Dispatcher.__init__() takes 1 positional argument but 2 were given
    

    我只是不明白为什么会有问题,我查阅了其他形式的答案,但在任何地方都找不到。 如何解决这个问题?非常感谢。

    1 回复  |  直到 2 年前
        1
  •  1
  •   MLpranav    2 年前

    来自 documentation :

    Dispatcher类在其初始值设定项中不再接受Bot实例。相反,Bot实例应该只传递给调度器,用于启动轮询或处理来自webhook的事件。这种方法还允许同时使用多个机器人实例(multibot)。

    here :

    dp = Dispatcher()
    
    async def main():
        bot = Bot(TOKEN, parse_mode=ParseMode.HTML)
        await dp.start_polling(bot)
    
    推荐文章