完成Python新手,对不起!
我使用处理回复的Telebot入门套件(https://github.com/yukuku/telebot):
elif 'who are you' in text:
reply('telebot starter kit, created by yukuku: https://github.com/yukuku/telebot')
我能够用以下图片回复:
elif 'Test1' in text:
reply(img=urllib2.urlopen('https://i.ytimg.com/vi/VC8H5B2YVCY/maxresdefault.jpg').read())
但是无法发送GIF动画。上面以img形式发送使用sendPhoto是静态的
我确定必须添加InlineQueryResultGif类并在回复()中调用它,但我已尝试了很多方法,但我不是取得任何进展
帮助!
编辑以显示一些尝试:
首先,我尝试编辑已经存在的用于发送img的elif参数:
elif gif:
gif = multipart.post_multipart(BASE_URL + 'InlineQueryResultGif', [
('chat_id', str(chat_id)),
('reply_to_message_id', str(message_id)),
], [
('gif', 'image.gif', gif),
])
然后只需将回复更改为:
elif 'Test4' in text:
reply(gif=urllib2.urlopen('http://www.reactiongifs.us/wp-content/uploads/2014/08/popcorn_indiana_jones.gif').read())
然后我尝试添加InlineQueryResultGif类本身:
class InlineQueryResult:
pass
class InlineQueryResultGif(InlineQueryResult):
""" Represents a link to an animated GIF file. By default, this animated GIF file will be sent by the user with
optional caption. Alternatively, you can provide message_text to send it instead of the animation.
Attributes:
id (str) :Unique identifier of this result
gif_url (str) :A valid URL for the GIF file. File size must not exceed 1MB
gif_width (int) :*Optional.* Width of the GIF
gif_height (int) :*Optional.* Height of the GIF
thumb_url (str) :*Optional.* URL of a static thumbnail for the result (jpeg or gif)
title (str) :*Optional.* Title for the result
caption (str) :*Optional.* Caption of the GIF file to be sent
message_text (str) :*Optional.* Text of a message to be sent instead of the animation
parse_mode (str) :*Optional.* Send “Markdown”, if you want Telegram apps to show bold,
italic and inline URLs in your bot's message.
disable_web_page_preview (bool) :*Optional.* Disables link previews for links in the sent message
"""
def __init__(self, id, gif_url,
gif_width=None, gif_height=None, thumb_url=None, title=None,
caption=None, message_text=None, parse_mode=None, disable_web_page_preview=None):
self.type = 'gif'
self.id = id
self.gif_url = gif_url
self.gif_width = gif_width
self.gif_height = gif_height
self.thumb_url = thumb_url
self.title = title
self.caption = caption
self.message_text = message_text
self.parse_mode = parse_mode
self.disable_web_page_preview = disable_web_page_preview
并试图在回复中打电话:
elif 'Test2' in text:
reply(InlineQueryResultGif('http://www.reactiongifs.us/wp-content/uploads/2014/08/popcorn_indiana_jones.gif'))
以上的许多不同版本。没有任何工作
答案 0 :(得分:0)
如果可以,请尝试使用此Python库进行电报
https://github.com/python-telegram-bot/python-telegram-bot
通过此功能,您可以轻松发送带sendDocument
的动画GIF:
bot.sendChatAction(chat_id=chat_id, action=telegram.ChatAction.UPLOAD_PHOTO)
bot.sendDocument(chat_id=chat_id, document=image_url)
答案 1 :(得分:0)
我正在使用python-telegram-bot,这就是我接触它的方式。
def sendImage(bot, update, dataval): # Funtion to send images or gifs the proper way
val = dataval.rsplit('.', 1)[1]
if val == 'gif':
# Send a gif
bot.sendDocument(chat_id=update.message.chat_id, document = dataval)
elif val == 'webm':
bot.sendMessage(chat_id=update.message.chat_id, text = "The item attempted to be sent is unsupported at the moment.")
else:
# Send a Picture
bot.sendPhoto(chat_id=update.message.chat_id, photo=dataval)
在上面的例子中,我将一个url传递给dataval变量中的函数。我好几个月没有重新访问过这个问题,因此,现在支持webm是可能的。此外,有一种方法可以通过存储在电报服务器上的ID发送图像,但是,我不知道如何使用该方法。
答案 2 :(得分:0)
除了你需要使用sendDocument
之外,你在实现内联内容之前第一次几乎没错了:
elif gif:
resp = multipart.post_multipart(BASE_URL + 'sendDocument', [
('chat_id', str(chat_id)),
('reply_to_message_id', str(message_id)),
], [
('gif', 'image.gif', gif),
])
...然后使用urllib2
来读取gif,如下所示:
elif 'Test2' in text:
reply(gif=urllib2.urlopen('http://www.reactiongifs.us/wp-content/uploads/2014/08/popcorn_indiana_jones.gif').read())
您也可以使用本地文件执行此操作,但我发现file://
中的urllib2
功能在处理相对路径时非常令人沮丧(例如使用Google AppEngine)。对于本地文件,我只使用urllib
,如下所示:
elif 'Test2' in text:
reply(gif=urllib.urlopen('images/animated.gif').read())