【发布时间】:2021-11-18 16:31:29
【问题描述】:
我正在创建一个 Telegram 机器人,需要 x-callback 到另一个应用程序。
这是我的 x-callback,它打开 VLC 并流式传输视频。当我在 Siri Shortcuts 或 Safari 中使用它时效果很好。但我需要它来处理 Telegram 聊天对话。
vlc-x-callback://x-callback-url/stream?url=https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4
当我将其作为原始文本发送时,它显然不会将其识别为有效的 url,并且什么也不做。
我尝试将其格式化为Markdown、MarkdownV2 和HTML 样式,但均无效。
我也试过InlineKeyboardButton 给它text 和url 但它会抛出一个BadRequest 错误
telegram.error.BadRequest: Inline keyboard button url is invalid
从 Telegram 到另一个应用的 x-callback 有什么解决方法吗?
我的问题与实现无关,但这是我使用 python-telegram-bot 的代码
from telegram import Update, ParseMode, InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import CommandHandler, CallbackContext, Updater
my_x_callback = 'vlc-x-callback://x-callback-url/stream?url=https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4'
def test(update: Update, context: CallbackContext):
update.message.reply_text(my_x_callback)
update.message.reply_text(f'[Play it on VLC]({my_x_callback})', parse_mode=ParseMode.MARKDOWN)
update.message.reply_text(f'[Play it on VLC]({my_x_callback})', parse_mode=ParseMode.MARKDOWN_V2)
update.message.reply_text(f'<a href="{my_x_callback}">Play it on VLC</a>', parse_mode=ParseMode.HTML)
button = InlineKeyboardButton('Play it on VLC', url=my_x_callback)
update.message.reply_text(
'Testing InlineKeyboard',
reply_markup=InlineKeyboardMarkup([[button]])
)
if __name__ == '__main__':
updater = Updater('TOKEN')
updater.dispatcher.add_handler(CommandHandler('test', test))
updater.start_polling()
updater.idle()
【问题讨论】:
-
我认为你需要在包含的 url 中对 url 进行编码。
-
您应该撤销您的机器人令牌。否则任何人都可以使用它。
-
@CallMeStag 哎呀!已撤销和编辑。谢谢
标签: ios telegram telegram-bot x-callback-url