Прежде чем начинать разработку, бота необходимо зарегистрировать и получить его уникальный 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