Ответы пользователя по тегу Telegram
  • Бот не видеть 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 комментариев
  • Как подключить базу данных Postgres к телеграм боту?

    ma4akk
    @ma4akk
    Чтобы подключить базу данных Postgres к телеграм боту, вам нужно сначала установить и настроить Postgres на вашем сервере. Это можно сделать, выполнив команду sudo apt-get install postgresql в командной строке. Затем вы можете запустить командную утилиту psql и создать базу данных с помощью команды CREATE DATABASE parser;.

    После этого вы можете использовать модуль psycopg2-binary для подключения к базе данных с помощью библиотеки SQLAlchemy. Для этого вы можете использовать код подобный следующему:

    import sqlalchemy
    
    DB_URL = 'postgresql://postgres:123@localhost:5432/parser'
    engine = sqlalchemy.create_engine(DB_URL)
    connection = engine.connect()


    Этот код создаст подключение к базе данных parser, используя имя пользователя postgres и пароль 123. После того, как подключение будет установлено, вы можете использовать методы connection для выполнения SQL-запросов и работы с базой данных.
    Ответ написан
    Комментировать
  • Почему Telethon возвращает None как значение юзернейма (хотя он у пользователя указан)?

    ma4akk
    @ma4akk
    Возможно, что информация о юзернейме не доступна через API, которое использует Telethon. Вам стоит проверить документацию и список доступных методов API для получения информации о пользователях. Если такой метод не предоставляется, то вы не сможете получить эту информацию с помощью Telethon.
    Ответ написан
    Комментировать