Guest User

getChatId

a guest
Jun 29th, 2015
1,411
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.20 KB | None | 0 0
  1. import json
  2. import logging
  3. import urllib
  4. import urllib2
  5.  
  6. from google.appengine.api import urlfetch
  7. from google.appengine.ext import ndb
  8. import webapp2
  9.  
  10. TOKEN = 'YOUR_BOT_TOKEN_HERE'
  11.  
  12. BASE_URL = 'https://api.telegram.org/bot' + TOKEN + '/'
  13.  
  14.  
  15. # ================================
  16.  
  17. class EnableStatus(ndb.Model):
  18.     # key name: str(chat_id)
  19.     enabled = ndb.BooleanProperty(indexed=False, default=False)
  20.  
  21.  
  22. # ================================
  23.  
  24. def setEnabled(chat_id, yes):
  25.     es = EnableStatus.get_or_insert(str(chat_id))
  26.     es.enabled = yes
  27.     es.put()
  28.  
  29. def getEnabled(chat_id):
  30.     es = EnableStatus.get_by_id(str(chat_id))
  31.     if es:
  32.         return es.enabled
  33.     return False
  34.  
  35. # ================================
  36.  
  37. class MeHandler(webapp2.RequestHandler):
  38.     def get(self):
  39.         urlfetch.set_default_fetch_deadline(60)
  40.         self.response.write(json.dumps(json.load(urllib2.urlopen(BASE_URL + 'getMe'))))
  41.  
  42.  
  43. class GetUpdatesHandler(webapp2.RequestHandler):
  44.     def get(self):
  45.         urlfetch.set_default_fetch_deadline(60)
  46.         self.response.write(json.dumps(json.load(urllib2.urlopen(BASE_URL + 'getUpdates'))))
  47.  
  48.  
  49. class SetWebhookHandler(webapp2.RequestHandler):
  50.     def get(self):
  51.         urlfetch.set_default_fetch_deadline(60)
  52.         url = self.request.get('url')
  53.         if url:
  54.             self.response.write(json.dumps(json.load(urllib2.urlopen(BASE_URL + 'setWebhook', urllib.urlencode({'url': url})))))
  55.  
  56. class WebhookHandler(webapp2.RequestHandler):
  57.     def post(self):
  58.         urlfetch.set_default_fetch_deadline(60)
  59.         body = json.loads(self.request.body)
  60.         logging.info('request body:')
  61.         logging.info(body)
  62.         self.response.write(json.dumps(body))
  63.  
  64.         update_id = body['update_id']
  65.         message = body['message']
  66.         message_id = message.get('message_id')
  67.         date = message.get('date')
  68.         text = message.get('text')
  69.         fr = message.get('from')
  70.         chat = message['chat']
  71.         chat_id = chat['id']
  72.  
  73.         if not text:
  74.             logging.info('no text')
  75.             return
  76.  
  77.         def reply(msg):
  78.             resp = urllib2.urlopen(BASE_URL + 'sendMessage', urllib.urlencode({
  79.                 'chat_id': str(chat_id),
  80.                 'text': msg,
  81.                 'disable_web_page_preview': 'true',
  82.                 'reply_to_message_id': str(message_id),
  83.             })).read()
  84.             logging.info('send response:')
  85.             logging.info(resp)
  86.  
  87.         if text.startswith('/'):
  88.             if text == '/start':
  89.                 reply('Bot enabled')
  90.                 setEnabled(chat_id, True)
  91.             elif text == '/stop':
  92.                 reply('Bot disabled')
  93.                 setEnabled(chat_id, False)
  94.             elif text == '/getChatId':
  95.                 reply(str(chat_id))
  96.             else:
  97.                 reply('What command?')
  98.  
  99.         # CUSTOMIZE FROM HERE
  100.  
  101.         elif 'who are you' in text:
  102.             reply('telebot starter kit, created by yukuku: https://github.com/yukuku/telebot')
  103.         elif 'what time' in text:
  104.             reply('look at the top-right corner of your screen!')
  105.         else:
  106.             if getEnabled(chat_id):
  107.                 resp1 = json.load(urllib2.urlopen('http://www.simsimi.com/requestChat?lc=en&ft=1.0&req=' + urllib.quote_plus(text.encode('utf-8'))))
  108.                 back = resp1.get('res')
  109.                 if not back:
  110.                     reply('okay...')
  111.                 elif 'I HAVE NO RESPONSE' in back:
  112.                     reply('you said something with no meaning')
  113.                 else:
  114.                     reply(back)
  115.             else:
  116.                 logging.info('not enabled for chat_id {}'.format(chat_id))
  117.  
  118.  
  119. class TestMessage(webapp2.RequestHandler):
  120.     def get(self):
  121.         resp = urllib2.urlopen(BASE_URL + 'sendMessage', urllib.urlencode({
  122.             'chat_id': str(1337), # REPLACE 1337 WITH YOUR CHAT ID
  123.             'text': 'Hi there! Test test test!'
  124.         })).read()
  125.  
  126. app = webapp2.WSGIApplication([
  127.     ('/me', MeHandler),
  128.     ('/updates', GetUpdatesHandler),
  129.     ('/set_webhook', SetWebhookHandler),
  130.     ('/webhook', WebhookHandler),
  131.     ('/testmsg', TestMessage),
  132. ], debug=True)
Advertisement
Add Comment
Please, Sign In to add comment