Skip to content

Commit 3e6b30c

Browse files
committed
working bot
1 parent 526d072 commit 3e6b30c

File tree

5 files changed

+99
-6
lines changed

5 files changed

+99
-6
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
# Created by .ignore support plugin (hsz.mobi)
22
.idea/
33
*.pyc
4+
katrinbot_settingsprod.py

katrinbot.py

Lines changed: 42 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
1+
# -*- coding: utf-8 -*-
12
import logging
3+
24
from flask import Flask
5+
from flask import jsonify
6+
from flask import request
7+
8+
from siteworker import get_latest, get_random
9+
from telegram import Bot
310

411
app = Flask(__name__)
512
app.config.from_object('katrinbot_settings')
@@ -12,14 +19,40 @@ def index():
1219
return "index page"
1320

1421

15-
@app.route("/wh/%s" % app.config['TOKEN'])
22+
def processwh(msg):
23+
repl_url = "http://lene.pois.org.ru/Katrin/img/{}"
24+
25+
user = msg["message"]["from"]["id"]
26+
message_id = msg["message"]["message_id"]
27+
text = msg["message"]["text"]
28+
29+
if text in ["/start", "/help"]:
30+
response = "Используй команды /random или /latest."
31+
elif text == "/latest":
32+
item = get_latest()
33+
response = repl_url.format(item)
34+
elif text == "/random":
35+
item = get_random()
36+
response = repl_url.format(item)
37+
else:
38+
response = "Шо?"
39+
40+
reply_markup = {"keyboard": [["/latest"], ["/random"]]}
41+
bot.send_message(user, response, reply_markup=reply_markup)
42+
return response
43+
44+
45+
@app.route("/wh/%s" % app.config['TOKEN'], methods=['GET', 'POST'])
1646
def webhook():
1747
app.logger.debug("got message")
18-
return "ok"
19-
48+
if request.method == 'POST':
49+
msg = request.get_json()
50+
app.logger.debug(msg)
51+
answer = processwh(msg)
52+
return jsonify(status="ok", answer=answer)
53+
else:
54+
return jsonify(status="ok")
2055

21-
def register_webhook():
22-
return "hh"
2356

2457
if __name__ == "__main__":
2558
if not app.debug:
@@ -29,5 +62,8 @@ def register_webhook():
2962
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
3063
ch.setFormatter(formatter)
3164
app.logger.addHandler(ch)
32-
app.logger.setLevel(logging.INFO)
65+
app.logger.setLevel(logging.DEBUG)
66+
bot = Bot(app.config['BOT_TOKEN'])
67+
wh_result = bot.register_webhook(WH_URL)
68+
app.logger.debug(wh_result)
3369
app.run()

katrinbot_settings.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
DEBUG = False
2+
URL = "https://vitko.info/katrinphotobot/wh/"
3+
TOKEN = "yourtokenhere"
4+
BOT_TOKEN = "yourbottokenhere"

siteworker.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import requests
2+
import random
3+
4+
5+
def get_items():
6+
r = requests.get("http://lene.pois.org.ru/Katrin/items")
7+
return [_["img"] for _ in r.json()]
8+
9+
10+
def get_sorted_items():
11+
return sorted(get_items())
12+
13+
14+
def get_latest():
15+
return get_sorted_items()[-1]
16+
17+
18+
def get_random():
19+
return random.choice(get_items())

telegram.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import logging
2+
import requests
3+
4+
5+
logger = logging.getLogger(__name__)
6+
7+
8+
class Bot(object):
9+
def __init__(self, token):
10+
self.__token = token
11+
self.__bot_url = "https://api.telegram.org/bot{bottoken}".format(bottoken=self.__token)
12+
13+
def __send_request(self, method_name, payload):
14+
uri = "{bot_url}/{method_name}".format(bot_url=self.__bot_url, method_name=method_name)
15+
r = requests.post(uri, json=payload)
16+
return r.json()
17+
18+
def send_message(self, chat_id, text, reply_to_message_id=None, reply_markup=None):
19+
logger.warn("sending message to %s", chat_id)
20+
print("reply_markup: %s" % reply_markup)
21+
payload = {
22+
"chat_id": chat_id,
23+
"text": text,
24+
"reply_to_message_id": reply_to_message_id,
25+
"reply_markup": reply_markup
26+
}
27+
return self.__send_request("sendMessage", payload)
28+
29+
def register_webhook(self, url):
30+
logger.info("Trying to unregister webhook")
31+
logger.info(self.__send_request("setWebhook", {"url": ""}))
32+
logger.info("Setting webhook to: %s" % url)
33+
return self.__send_request("setWebhook", {"url": url})

0 commit comments

Comments
 (0)