如何在电报机器人

时间:2016-04-21 19:02:07

标签: python telegram-bot telepot

我正在实施一个简单的机器人,他应该向我的chat_id发送一些照片和视频。 好吧,我使用的是python,这是脚本

import sys
import time
import random
import datetime
import telepot

def handle(msg):
    chat_id = msg['chat']['id']
    command = msg['text']

    print 'Got command: %s' % command

    if command == 'command1':
        bot.sendMessage(chat_id, *******)
    elif command == 'command2':
        bot.sendMessage(chat_id, ******)
    elif command == 'photo':
        bot.sendPhoto(...)

bot = telepot.Bot('*** INSERT TOKEN ***')
bot.message_loop(handle)
print 'I am listening ...'

while 1:
    time.sleep(10)

在第bot.sendphoto行中,我会插入路径和图像的chat_id,但没有任何反应。

我哪里错了?

感谢

7 个答案:

答案 0 :(得分:4)

只需使用 Requests 库即可:

def send_photo(chat_id, file_opened):
    method = "sendPhoto"
    params = {'chat_id': chat_id}
    files = {'photo': file_opened}
    resp = requests.post(api_url + method, params, files=files)
    return resp

send_photo(chat_id, open(file_path, 'rb'))

答案 1 :(得分:2)

我也尝试过使用请求从python发送。也许它的答案很晚,但是把它留给像我这样的其他人......也许它会来使用.. 我跟subprocess一样成功了:

def send_image(botToken, imageFile, chat_id):
        command = 'curl -s -X POST https://api.telegram.org/bot' + botToken + '/sendPhoto -F chat_id=' + chat_id + " -F photo=@" + imageFile
        subprocess.call(command.split(' '))
        return

答案 2 :(得分:2)

这是在电报中发送照片的完整代码:

<块引用>
import telepot
bot = telepot.Bot('______ YOUR TOKEN ________')

# here replace chat_id and test.jpg with real things
bot.sendPhoto(chat_id, photo=open('test.jpg', 'rb'))

答案 3 :(得分:1)

您可以使用以下几行:

.container-top {
  position: relative;
  height: 310px;
  padding: 0 20px;
}

.container-left-video {
  margin: 0;
  float: left;
}

.container-right-video {
  float: right;
}

答案 4 :(得分:1)

我在使用python-telegram-bot来发送图像和标题时使用了以下命令:

SELECT * FROM user_place;

答案 5 :(得分:0)

你需要传递2个参数

bot.sendPhoto(chat_id, 'URL')

答案 6 :(得分:0)

sendPhoto至少需要两个参数;第一个是目标 chat_id ,第二个是照片,您有三个选择:

  1. 如果照片已上传到电报服务器,则传递file_id(建议因为您不需要重新上传照片)。
  2. 如果照片上传到其他地方,请传递完整的http网址并发送电报(最大照片尺寸为5MB atm)。
  3. 使用multipart / form-data发布文件,就像你想通过浏览器上传一样(这样最大10MB的照片大小)。