Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- import StringIO
- import json
- import logging
- import random
- import urllib
- import urllib2
- # for sending images
- from PIL import Image
- import multipart
- # standard app engine imports
- from google.appengine.api import urlfetch
- from google.appengine.ext import ndb
- import webapp2
- TOKEN = 'JAJAJAJAJAJAJAJAJA_NOOOOO'
- BASE_URL = 'https://api.telegram.org/bot' + TOKEN + '/'
- # ================================
- class EnableStatus(ndb.Model):
- # key name: str(chat_id)
- enabled = ndb.BooleanProperty(indexed=False, default=False)
- # ================================
- def setEnabled(chat_id, yes):
- es = EnableStatus.get_or_insert(str(chat_id))
- es.enabled = yes
- es.put()
- def getEnabled(chat_id):
- es = EnableStatus.get_by_id(str(chat_id))
- if es:
- return es.enabled
- return False
- # ================================
- class MeHandler(webapp2.RequestHandler):
- def get(self):
- urlfetch.set_default_fetch_deadline(60)
- self.response.write(json.dumps(json.load(urllib2.urlopen(BASE_URL + 'getMe'))))
- class GetUpdatesHandler(webapp2.RequestHandler):
- def get(self):
- urlfetch.set_default_fetch_deadline(60)
- self.response.write(json.dumps(json.load(urllib2.urlopen(BASE_URL + 'getUpdates'))))
- class SetWebhookHandler(webapp2.RequestHandler):
- def get(self):
- urlfetch.set_default_fetch_deadline(60)
- url = self.request.get('url')
- if url:
- self.response.write(json.dumps(json.load(urllib2.urlopen(BASE_URL + 'setWebhook', urllib.urlencode({'url': url})))))
- class WebhookHandler(webapp2.RequestHandler):
- def post(self):
- urlfetch.set_default_fetch_deadline(60)
- body = json.loads(self.request.body)
- logging.info('request body:')
- logging.info(body)
- self.response.write(json.dumps(body))
- update_id = body['update_id']
- try:
- message = body['message']
- except:
- message = body['edited_message']
- message_id = message.get('message_id')
- date = message.get('date')
- text = message.get('text')
- fr = message.get('from')
- chat = message['chat']
- chat_id = chat['id']
- username = chat['username']
- if not text:
- logging.info('no text')
- return
- def reply(msg=None, img=None):
- if msg:
- resp = urllib2.urlopen(BASE_URL + 'sendMessage', urllib.urlencode({
- 'chat_id': str(chat_id),
- 'text': msg.encode('utf-8'),
- 'disable_web_page_preview': 'true',
- 'reply_to_message_id': str(message_id),
- })).read()
- elif img:
- resp = multipart.post_multipart(BASE_URL + 'sendPhoto', [
- ('chat_id', str(chat_id)),
- ('reply_to_message_id', str(message_id)),
- ], [
- ('photo', 'image.jpg', img),
- ])
- else:
- logging.error('no msg or img specified')
- resp = None
- logging.info('send response:')
- logging.info(resp)
- def replyFather(msg, username, userChatId):
- msg = "@" + str(username) + " (" + str(userChatId) + ") dice:\r\n" + str(msg)
- resp = urllib2.urlopen(BASE_URL + 'sendMessage', urllib.urlencode({
- 'chat_id': str(28258807),
- 'text': msg.encode('utf-8'),
- 'disable_web_page_preview': 'false',
- })).read()
- logging.info('send response:')
- logging.info(resp)
- if text.startswith('/'):
- if text == '/start':
- reply('Bot enabled')
- setEnabled(chat_id, True)
- elif text == '/stop':
- reply('Bot disabled')
- setEnabled(chat_id, False)
- elif text == '/flag':
- reply('Reach me at https://gitlab.com/coriumalpha')
- else:
- reply('Unrecognized command')
- # CUSTOMIZE FROM HERE
- else:
- if getEnabled(chat_id):
- reply('I got your message! (but I do not know how to answer)')
- else:
- logging.info('not enabled for chat_id {}'.format(chat_id))
- if chat_id != AQUÍ VA EL CHAT ID DE DAVID:
- replyFather(text, username, chat_id)
- app = webapp2.WSGIApplication([
- ('/me', MeHandler),
- ('/updates', GetUpdatesHandler),
- ('/set_webhook', SetWebhookHandler),
- ('/webhook', WebhookHandler),
- ], debug=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement