-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwebhook.py
70 lines (55 loc) · 1.85 KB
/
webhook.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
66
67
68
69
70
"""
Telegram bot implementation using Flask and webhooks.
"""
import os
import traceback
import telegram
from telegram.ext import Updater, ChosenInlineResultHandler
from telegram.ext import CommandHandler, InlineQueryHandler
from flask import Flask, request
from core import helpbot, inlinequery, error, collectfeedback, start
app = Flask(__name__)
TOKEN_PATH = os.path.join(os.environ.get('OPENSHIFT_DATA_DIR'), 'token')
with open(TOKEN_PATH, 'r') as f:
TOKEN = f.read().strip()
bot = telegram.Bot(token=TOKEN)
# Create telegram.ext/dispatcher to manage incoming requests.
# Once an update is handled, all further handlers are ignored.
# The order defines priority.
updater = Updater(TOKEN)
dp = updater.dispatcher
dp.add_handler(CommandHandler("help", helpbot))
dp.add_handler(CommandHandler("start", start))
dp.add_handler(InlineQueryHandler(inlinequery))
dp.add_handler(ChosenInlineResultHandler(collectfeedback))
dp.add_error_handler(error)
@app.route('/' + TOKEN, methods=['POST'])
def webhook_handler():
if request.method == "POST":
try:
getdata = request.get_json(force=True)
update = telegram.Update.de_json(getdata)
dp.processUpdate(update)
except Exception:
return traceback.format_exc()
return 'ok'
@app.route('/set_webhook', methods=['GET', 'POST'])
def set_webhook():
s = bot.setWebhook('https://' + os.environ['OPENSHIFT_APP_DNS'] +
'/' + TOKEN)
if s:
return "webhook setup ok"
else:
return "webhook setup failed"
@app.route('/remove_webhook', methods=['GET', 'POST'])
def remove_webhook():
s = bot.setWebhook('')
if s:
return "webhook removed ok"
else:
return "webhook removed failed"
@app.route('/')
def index():
return '.'
if __name__ == '__main__':
app.run(host='localhost', port=5000, debug=True)