Задать вопрос
  • Почему Перестали после обновления и отката версии aiogram работать inline кнопки, как исправить?

    lxst
    @lxst Автор вопроса
    Студент программист
    Оказалось просто телега перестала давать апдейты, тут либо создавать нового бота в BotFather либо добавлять скрипт
    from aiogram import Dispatcher
    
    
    def get_handled_updates_list(dp: Dispatcher) -> list:
        """
        Here we collect only the needed updates for bot based on already registered handlers types.
        This way Telegram doesn't send unwanted updates and bot doesn't have to proceed them.
        :param dp: Dispatcher
        :return: a list of registered handlers types
        """
        available_updates = (
            "callback_query_handlers", "channel_post_handlers", "chat_member_handlers",
            "chosen_inline_result_handlers", "edited_channel_post_handlers", "edited_message_handlers",
            "inline_query_handlers", "message_handlers", "my_chat_member_handlers", "poll_answer_handlers",
            "poll_handlers", "pre_checkout_query_handlers", "shipping_query_handlers"
        )
        return [item.replace("_handlers", "") for item in available_updates
                if len(dp.__getattribute__(item).handlers) > 0]

    и
    executor.start_polling(dp,allowed_updates=get_handled_updates_list(dp), on_startup=on_startup)

    За скрипт и помощь отдельная благодарность febday
    Ответ написан
    Комментировать
  • Как получить результат telebot send_dice()?

    lxst
    @lxst
    Студент программист
    в aiogram делал так
    value = await bot.send_dice(call.from_user.id, emoji="")

    await только не пиши
    или если через хендлер будет как-то так
    @bot.message_handler(content_types=['dice'])
    def dice_value(message):
      value = message.dice.value
    Ответ написан
    Комментировать
  • Как сделать чтобы телеграм бот не присылал предыдущее сообщение с кнопками?

    lxst
    @lxst
    Студент программист
    Можно конечно и лучше логику составить, но вот:
    @bot.message_handler(content_types=['text'])
    def lmdbot(message):
        if message.text == 'Рухати мишкою':
            bot.register_next_step_handler(bot.send_message(message.from_user.id, 'Скільки разів?'), mousemove)
        else:
            markup = telebot.types.ReplyKeyboardMarkup(row_width=2)
            markup.add(telebot.types.KeyboardButton("Рухати мишкою"))
            bot.send_message(message.from_user.id, "Що робити?", reply_markup=markup)
    
    def mousemove(message):
        times = int(message.text)
        try:
            for a in range(times):
                rh=random.randint(0, 1080)
                rw=random.randint(0, 1920)
                mouse.move(rw, rh, duration=1)
        except:
            lmdbot(message)
    Ответ написан
    Комментировать
  • Как получить username пользователя в aiogram?

    lxst
    @lxst
    Студент программист
    message.from_user.username
    Ответ написан
    Комментировать
  • Как это реализовать?

    lxst
    @lxst
    Студент программист
    Если вопрос состоит в том как принять у пользователя значения, то для этого вам нужно изучить машину состояний (FSM), но можно и проще, сделав для команды аргументы.
    (Пример: /r 0 100) где 0 - первое значение | 100 - второе.
    @dp.message_handler(commands=['r'])
    async def random(message: types.Message):
        await message.reply()
        arg_ = message.text.split()
        x, y = int(arg_[1]), int(arg_[2]

    и у тебя будет:
    x - первое значение
    y - второе
    Ответ написан
    Комментировать