Категория: Технология программирования

Кол-во просмотров: 4417

Теги: #python #linux


Делаем бота для telegram bot на python

Прежде чем начинать разработку, бота необходимо зарегистрировать и получить его уникальный id, являющийся одновременно и токеном. Для этого в Telegram существует специальный бот — @BotFather.

Пишем ему /start и получаем список всех его команд. 
Первая и главная — /newbot — отправляем ему и бот просит придумать имя нашему новому боту. Единственное ограничение на имя — в конце оно должно оканчиваться на «bot». В случае успеха BotFather возвращает токен бота и ссылку для быстрого добавления бота в контакты, иначе придется поломать голову над именем.

Для начала работы этого уже достаточно. Особо педантичные могут уже здесь присвоить боту аватар, описание и приветственное сообщение.

Получаем id c api.telegram.org/bot<TOKEN>/getMe, говорят, не всегда работает с первого раза.

 

 


import urllib3, urllib2, urllib, json, datetime, time, requests
urllib3.disable_warnings()
token = ''
chat_id = ''
interval = 0
url = 'https://api.telegram.org/bot%s/' % token
offset = 0
def get_updates():
    global offset
    offset = offset + 1
    updates = url+ 'getUpdates?offset=%s' % offset
    response = urllib2.urlopen(updates)
    res = response.read()
    j = json.loads(res)
    for new in j['result']:
        offset = new['update_id']
        if not 'message' in new or not 'text' in new['message']:
            continue
        from_id = new['message']['chat']['id']
        message = new['message']['text']
        if message == u'Команды':
            text = str('''
            Команды: \n
            
            1. Пришли фото \n
            2. Как дела?\n
         
                      ''')
            
            send_mess(from_id, text)
        if message == u'Пришли фото':
            photo = open('image/foto.jpg','rb')
            send_photo(from_id, photo)

        if message == u'Как дела?':
            text = str("Все ок, как у вас?")
            send_mess(from_id, text)

def send_mess(id, text):
    mess = url+ 'sendMessage'
    requests.post(mess, data={'chat_id':id, 'text':text})
def send_photo(id, photo):
    url_photo = url+ 'sendPhoto'
    requests.post(url_photo, data={'chat_id': id}, files={'photo':photo})

if __name__ == "__main__":
    while True:
        try:
            get_updates()
            time.sleep(interval)
        except KeyboardInterrupt:
            print 'Aborted'
            break

Категория: Технология программирования

Кол-во просмотров: 4417

Дата создания: 25 сентября 2015 г.

Теги: #python #linux