Ответы пользователя по тегу Боты
  • Бот не видеть file_id, что делать?

    ma4akk
    @ma4akk
    В вашем коде ошибка. Вы используете метод open() для открытия файла изображения, который принимает путь к файлу изображения на диске. В вашем случае в качестве пути к файлу изображения вы передаете строку с file_id изображения, который хранится на сервере Telegram.

    Чтобы отправить изображение ботом используйте метод send_photo(), который принимает chat_id получателя, и идентификатор файла изображения file_id.

    @dp.message_handler(content_types=['text'], text=['/mem', 'mem', 'мем'])
    async def sendphoto(msg):
        arr=["AgACAgIAAxkBAAIBDGOTEZidA5W9TrvjLb_d7cAE5Nn7AALewjEbPQigSLUEN_gyByq8AQADAgADeAADKwQ", "AgACAgIAAxkBAAIBDGOTEZidA5W9TrvjLb_d7cAE5Nn7AALewjEbPQigSLUEN_gyByq8AQADAgADeAADKwW"]
        file_id = random.choice(arr)
        await bot.send_photo(msg.from_user.id, file_id)
    Ответ написан
    1 комментарий
  • Можно ли получить значение callback_data при реплае?

    ma4akk
    @ma4akk
    Мб так
    @dp.message_handler(commands=['test'])
    async def test(message: types.Message):
        user_id = message.from_user.id
        keyboard = types.InlineKeyboardMarkup()
        callback_button = types.InlineKeyboardButton(text="test button", callback_data=f"{user_id}")
        keyboard.add(callback_button)
        await message.answer('test message', reply_markup=keyboard)
    
    @dp.message_handler(content_types=['text'])
    async def text(message: types.Message):
        if message.reply_to_message:
            # Получаем данные из callback_data
            callback_data = message.reply_to_message.callback_data
            # Сравниваем user_id из сообщения и user_id из callback_data
            if message.from_user.id == callback_data:
                await bot.edit_message_text(chat_id=message.chat.id, message_id=message.reply_to_message.message_id, text='Good')
    Ответ написан
  • Как сделать команду и функцию по команде только для вызывавшего эту команду в чате(Python, Pyrogram)?

    ma4akk
    @ma4akk
    Чтобы сделать команду доступной только для того, кто ее вызвал, можно использовать фильтр filters.private. Например:

    @bot.on_message(filters.private & filters.command(['Кнб'], prefixes=''))
    async def startik(bot, message):
        # Код команды здесь


    Этот фильтр будет пропускать только сообщения, отправленные в личном чате боту (не в групповом чате или канале).

    Чтобы скрыть кнопки у остальных пользователей, можно использовать метод delete_message вместе с фильтром filters.user(message.from_user.id) для удаления сообщения с кнопками только у отправителя сообщения. Например:

    @bot.on_message(filters.private & filters.command(['Кнб'], prefixes=''))
    async def startik(bot, message):
        # Код команды здесь
    
        # Удаление сообщения с кнопками у отправителя сообщения
        await bot.delete_message(message.chat.id, message.message_id, filters.user(message.from_user.id))
    Ответ написан
    5 комментариев