/
app.py
65 lines (49 loc) · 1.86 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
from queue import Queue
from threading import Thread
from flask import Flask, request
from telegram.ext import MessageHandler, Filters
from telegram import Bot,Update
from telegram.ext import Dispatcher
import logging
import sys
import os
file_handler = logging.FileHandler(filename='log.txt',encoding='utf-8')
stdout_handler = logging.StreamHandler(sys.stdout)
handlers = [file_handler, stdout_handler]
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.INFO,handlers=handlers)
logger = logging.getLogger(__name__)
TOKEN = "Your token from @Botfather"
NAME = "The name of your app on Heroku"
PORT = int(os.environ.get('PORT', '8443'))
bot = Bot(TOKEN)
def echo(update, context):
text = update.message.text
update.message.reply_text(text)
def setup(TOKEN):
# update queue and dispatcher instances
update_queue = Queue()
dispatcher = Dispatcher(bot, update_queue, use_context=True)
##### Register handlers here #####
echo_handler = MessageHandler(Filters.text, echo)
dispatcher.add_handler(echo_handler)
# Start the thread
bot.setWebhook("https://{}.herokuapp.com/{}".format(NAME, TOKEN))
thread = Thread(target=dispatcher.start, name='dispatcher')
thread.start()
return update_queue
# you might want to return dispatcher as well,
# to stop it at server shutdown, or to register more handlers:
# return (update_queue, dispatcher)
app = Flask(__name__)
update_queue = setup(token)
@app.route('/')
def hello_world():
return 'Hello World!'
@app.route('/' + TOKEN, methods=['GET','POST'])
def pass_update():
new_update = Update.de_json(request.get_json(force=True),bot)
update_queue.put(new_update)
return "ok"
if __name__ == '__main__':
app.run(host='0.0.0.0',port=PORT,debug=True)