Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.70 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. import StringIO
  5. import json
  6. import logging
  7. import random
  8. import urllib
  9. import urllib2
  10.  
  11. # for sending images
  12. from PIL import Image
  13. import multipart
  14.  
  15. # standard app engine imports
  16. from google.appengine.api import urlfetch
  17. from google.appengine.ext import ndb
  18.  
  19. import webapp2
  20.  
  21. TOKEN = 'JAJAJAJAJAJAJAJAJA_NOOOOO'
  22.  
  23. BASE_URL = 'https://api.telegram.org/bot' + TOKEN + '/'
  24.  
  25.  
  26. # ================================
  27.  
  28. class EnableStatus(ndb.Model):
  29. # key name: str(chat_id)
  30. enabled = ndb.BooleanProperty(indexed=False, default=False)
  31.  
  32.  
  33. # ================================
  34.  
  35. def setEnabled(chat_id, yes):
  36. es = EnableStatus.get_or_insert(str(chat_id))
  37. es.enabled = yes
  38. es.put()
  39.  
  40. def getEnabled(chat_id):
  41. es = EnableStatus.get_by_id(str(chat_id))
  42. if es:
  43. return es.enabled
  44. return False
  45.  
  46.  
  47. # ================================
  48.  
  49. class MeHandler(webapp2.RequestHandler):
  50. def get(self):
  51. urlfetch.set_default_fetch_deadline(60)
  52. self.response.write(json.dumps(json.load(urllib2.urlopen(BASE_URL + 'getMe'))))
  53.  
  54.  
  55. class GetUpdatesHandler(webapp2.RequestHandler):
  56. def get(self):
  57. urlfetch.set_default_fetch_deadline(60)
  58. self.response.write(json.dumps(json.load(urllib2.urlopen(BASE_URL + 'getUpdates'))))
  59.  
  60.  
  61. class SetWebhookHandler(webapp2.RequestHandler):
  62. def get(self):
  63. urlfetch.set_default_fetch_deadline(60)
  64. url = self.request.get('url')
  65. if url:
  66. self.response.write(json.dumps(json.load(urllib2.urlopen(BASE_URL + 'setWebhook', urllib.urlencode({'url': url})))))
  67.  
  68.  
  69. class WebhookHandler(webapp2.RequestHandler):
  70. def post(self):
  71. urlfetch.set_default_fetch_deadline(60)
  72. body = json.loads(self.request.body)
  73. logging.info('request body:')
  74. logging.info(body)
  75. self.response.write(json.dumps(body))
  76.  
  77. update_id = body['update_id']
  78. try:
  79. message = body['message']
  80. except:
  81. message = body['edited_message']
  82. message_id = message.get('message_id')
  83. date = message.get('date')
  84. text = message.get('text')
  85. fr = message.get('from')
  86. chat = message['chat']
  87. chat_id = chat['id']
  88. username = chat['username']
  89.  
  90. if not text:
  91. logging.info('no text')
  92. return
  93.  
  94. def reply(msg=None, img=None):
  95. if msg:
  96. resp = urllib2.urlopen(BASE_URL + 'sendMessage', urllib.urlencode({
  97. 'chat_id': str(chat_id),
  98. 'text': msg.encode('utf-8'),
  99. 'disable_web_page_preview': 'true',
  100. 'reply_to_message_id': str(message_id),
  101. })).read()
  102. elif img:
  103. resp = multipart.post_multipart(BASE_URL + 'sendPhoto', [
  104. ('chat_id', str(chat_id)),
  105. ('reply_to_message_id', str(message_id)),
  106. ], [
  107. ('photo', 'image.jpg', img),
  108. ])
  109. else:
  110. logging.error('no msg or img specified')
  111. resp = None
  112.  
  113. logging.info('send response:')
  114. logging.info(resp)
  115.  
  116.  
  117. def replyFather(msg, username, userChatId):
  118.  
  119. msg = "@" + str(username) + " (" + str(userChatId) + ") dice:\r\n" + str(msg)
  120.  
  121. resp = urllib2.urlopen(BASE_URL + 'sendMessage', urllib.urlencode({
  122. 'chat_id': str(28258807),
  123. 'text': msg.encode('utf-8'),
  124. 'disable_web_page_preview': 'false',
  125. })).read()
  126.  
  127.  
  128. logging.info('send response:')
  129. logging.info(resp)
  130.  
  131.  
  132. if text.startswith('/'):
  133. if text == '/start':
  134. reply('Bot enabled')
  135.  
  136. setEnabled(chat_id, True)
  137. elif text == '/stop':
  138. reply('Bot disabled')
  139. setEnabled(chat_id, False)
  140.  
  141. elif text == '/flag':
  142. reply('Reach me at https://gitlab.com/coriumalpha')
  143.  
  144. else:
  145. reply('Unrecognized command')
  146.  
  147. # CUSTOMIZE FROM HERE
  148.  
  149. else:
  150. if getEnabled(chat_id):
  151. reply('I got your message! (but I do not know how to answer)')
  152. else:
  153. logging.info('not enabled for chat_id {}'.format(chat_id))
  154.  
  155. if chat_id != AQUÍ VA EL CHAT ID DE DAVID:
  156. replyFather(text, username, chat_id)
  157.  
  158.  
  159. app = webapp2.WSGIApplication([
  160. ('/me', MeHandler),
  161. ('/updates', GetUpdatesHandler),
  162. ('/set_webhook', SetWebhookHandler),
  163. ('/webhook', WebhookHandler),
  164. ], debug=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement