Performance improvement. Now bot obtains himself data via getMe api call.

This commit is contained in:
Alexandr
2018-03-26 16:09:06 +02:00
parent 21a73e9fa6
commit 3aa7982116

View File

@@ -7,17 +7,34 @@ from database import DataBase
import os import os
import urllib.request import urllib.request
from urllib.parse import urlencode from urllib.parse import urlencode
import json
import settings import settings
import re import re
class MessageWorker: class MessageWorker:
def __init__(self, db, stop_words = 'assets/stop-word.ru'): def __init__(self, db, stop_words = 'assets/stop-word.ru', settings = settings):
self.stop_words = stop_words self.stop_words = stop_words
self.db = db self.db = db
self.telegram_key = settings.parser.get('bot', 'telegram_key')
self.telegram_api = settings.parser.get('bot', 'telegram_api')
self.me = self.getMe()
print("My name is %s" % self.me['result']['username'])
def getMe(self):
url = self.telegram_api + 'bot' + self.telegram_key + '/getMe'
print(url)
urllib.request.Request(url)
request = urllib.request.Request(url)
raw = urllib.request.urlopen(request).read().decode()
return json.loads(raw)
def handleUpdate(self, msg): def handleUpdate(self, msg):
try: try:
if msg['message']['text'] == '/scheme': try:
input_message = msg['message']['text'].replace('@' + self.me['result']['username'], '')
except:
input_message = msg['message']['text']
if input_message == '/scheme':
conf_id = msg['message']['chat']['id'] conf_id = msg['message']['chat']['id']
user_id = msg['message']['from']['id'] user_id = msg['message']['from']['id']
chat_title = msg['message']['chat']['title'] chat_title = msg['message']['chat']['title']
@@ -25,7 +42,7 @@ class MessageWorker:
self.send(id=conf_id, msg='```\n' + self.db.scheme + '\n```') self.send(id=conf_id, msg='```\n' + self.db.scheme + '\n```')
return True return True
if msg['message']['text'] == '/stat': if input_message == '/stat':
conf_id = msg['message']['chat']['id'] conf_id = msg['message']['chat']['id']
user_id = msg['message']['from']['id'] user_id = msg['message']['from']['id']
chat_title = msg['message']['chat']['title'] chat_title = msg['message']['chat']['title']
@@ -41,7 +58,7 @@ class MessageWorker:
self.send(id=conf_id, msg=message) self.send(id=conf_id, msg=message)
return True return True
if msg['message']['text'] == '/reset': if input_message == '/reset':
conf_id = msg['message']['chat']['id'] conf_id = msg['message']['chat']['id']
user_id = msg['message']['from']['id'] user_id = msg['message']['from']['id']
chat_title = msg['message']['chat']['title'] chat_title = msg['message']['chat']['title']
@@ -53,7 +70,7 @@ class MessageWorker:
user_id=user_id) user_id=user_id)
return True return True
if msg['message']['text'][:4] == '/sql': if input_message[:4] == '/sql':
conf_id = msg['message']['chat']['id'] conf_id = msg['message']['chat']['id']
user_id = msg['message']['from']['id'] user_id = msg['message']['from']['id']
chat_title = msg['message']['chat']['title'] chat_title = msg['message']['chat']['title']
@@ -76,20 +93,22 @@ class MessageWorker:
self.send(id=conf_id, msg=msg + ' ```') self.send(id=conf_id, msg=msg + ' ```')
return True return True
if msg['message']['text'][:5] == '@here' or \ if '@here' in input_message:
msg['message']['text'][5:] == '@here':
conf_id = msg['message']['chat']['id'] conf_id = msg['message']['chat']['id']
user_id = msg['message']['from']['id'] user_id = msg['message']['from']['id']
chat_title = msg['message']['chat']['title'] chat_title = msg['message']['chat']['title']
self.db.add_conf(conf_id, chat_title) self.db.add_conf(conf_id, chat_title)
if msg['message']['text'] != '@here':
message = msg['message']['text'].replace('@here', '\n')
else:
message = """I summon you!\n"""
message = """I summon you!\n"""
users = self.db.here( users = self.db.here(
user_id=user_id, user_id=user_id,
conf_id=conf_id conf_id=conf_id
) )
for user in users: for user in users:
message += '@%s ' % (user[0]) message += ' @%s ' % (user[0])
self.send(id=conf_id, msg=message) self.send(id=conf_id, msg=message)
return True return True
except: except:
@@ -156,9 +175,7 @@ class MessageWorker:
def send(self, id, msg): def send(self, id, msg):
print(msg) print(msg)
url = settings.parser.get('bot', 'telegram_api') + \ url = self.telegram_api + 'bot' + self.telegram_key + '/sendMessage'
'bot'+ settings.parser.get('bot', 'telegram_key') \
+ '/sendMessage'
post_fields = { post_fields = {
'text': msg, 'text': msg,
'chat_id': id, 'chat_id': id,