Как отправить gif с помощью встроенной клавиатуры, когда нажат старт, используя python-telegram-bot? - PullRequest
1 голос
/ 24 марта 2019

Я пытаюсь сделать бот меню. Все работает, но я не могу поставить GIF для украшения перед клавиатурой и сообщением.

Я использовал несколько вариантов .inputmedia и .document от здесь .

Я ничего не знаю и у меня нулевое знание Python. Я могу понять только на лету от чтения в Интернете. Я действительно не могу понять, как это сформулировать.

from telegram.ext import Updater
from telegram.ext import CommandHandler, CallbackQueryHandler
from telegram import InlineKeyboardButton, InlineKeyboardMarkup
import emoji
def start(bot, update):
  update.message.reply_text(main_menu_message(),
                            reply_markup=main_menu_keyboard())

def main_menu(bot, update):
  query = update.callback_query
  bot.edit_message_text(chat_id=query.message.chat_id,
                        message_id=query.message.message_id,
                        text=main_menu_message(),
                        reply_markup=main_menu_keyboard())

def first_menu(bot, update):
  query = update.callback_query
  bot.edit_message_text(chat_id=query.message.chat_id,
                        message_id=query.message.message_id,
                        text=first_menu_message(),
                        reply_markup=first_menu_keyboard())

Практически все, что мне нужно, это пример того, как сформулировать команду inputgif с некоторым текстом и клавиатурой для разметки. Спасибо!

Ответы [ 2 ]

0 голосов
/ 26 марта 2019

используйте эти методы:

  • update.message.send_animation()
  • bot.send_animation()
  • bot.edit_message_media()

Например:

def start(bot, update):
    gif_link='https://media.giphy.com/media/yFQ0ywscgobJK/giphy.gif'
    update.message.reply_animation(
        animation=gif_link,
        caption=main_menu_message(),
        reply_markup=main_menu_keyboard(),
        parse_mode=ParseMode.MARKDOWN
    )

upd: @ amir-a-shabani спасибо за издание и спасибо @ david-kha за использование примеров кода)

0 голосов
/ 26 марта 2019

Вы имеете в виду что-то подобное?

enter image description here

Если да , продолжайте читать!Если нет , сообщите мне в комментариях.

  • Мы будем использовать метод send_animation из telegram.Bot class.

    Используйте этот метод для отправки файлов анимации (видео в формате GIF или H.264 / MPEG-4 AVC без звука).

  • Нам нужно знать file_id GIF, который мы хотим отправить! Важно : нам нужно получить file_id в тот же чат с ботом !

Вот как мы можем отправить GIF с caption и inline keyboard (вы можете увидеть полный код на моем GitHub: wehavetogoback.py )

keyboard = [
    [
        InlineKeyboardButton('yes ?', callback_data='yes'),
        InlineKeyboardButton('no ?', callback_data='no')
    ]
]

bot.send_animation(
    chat_id=update.message.chat.id,
    animation='file_id',
    caption='go back??',
    reply_markup=InlineKeyboardMarkup(keyboard)
)
...