Skip to content

Commit af2debb

Browse files
committed
Melhoramentos no sistema de autorização...
- Economia de consultas ao salvar uma lista de usuários automaticamente autorizados; - Correção de um algoritmo porco que não servia para nada (só checkava se o membro era do grupo de onde a mensagem veio, o que é uma clara tolice)
1 parent 9f8598f commit af2debb

File tree

4 files changed

+37
-4
lines changed

4 files changed

+37
-4
lines changed

api.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -133,5 +133,4 @@ def isGroupMember(chat_id, user_id):
133133
if (response['ok'] == True):
134134
return True
135135
else:
136-
return False
137-
136+
return False

data/config.json.dist

+7
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
"sudoers": [
33
49681384
44
],
5+
"authorized_chats": [
6+
-7016014,
7+
-1001049208929
8+
],
59
"authorized_users": [
610
49681384,
711
14160874,
@@ -24,6 +28,9 @@
2428
102544375,
2529
52433246,
2630
78977189
31+
],
32+
"automatically_authorized_users": [
33+
2734
],
2835
"enabled_plugins": {
2936
"^[!/]melembra(?:@MercuriumBot)? ?([0-9]+d)?([0-9]+h)?([0-9]+m)?([0-9]+s)?(?: (.+))?$": "melenbra",

plugins/stats.py

+10
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,12 @@
33
from os import environ
44
import requests
55
import json
6+
import psycopg2 as psql
7+
from os import environ as env
68
from api import send_message
79

10+
SQLPARAMS = "dbname=mercurium user=mercurium password=" + env['REBORNKEY']
11+
812
# Isso deve ser suficiente para transplantar as estatísticas para
913
# um plugin independente
1014
def on_msg_received(msg, matches):
@@ -29,6 +33,12 @@ def return_statistics(chat):
2933
else:
3034
return "n ten isotirco nesste xet ;()"
3135

36+
# Conecta-se à base SQL
37+
#conn = psql.connect(SQLPARAMS)
38+
39+
40+
41+
3242
dictofdicts = {}
3343

3444
# Passa cada usuário do chat pro dictofdicts, onde a chave é o nome e o valor é a qtde.

reborn.py

+19-2
Original file line numberDiff line numberDiff line change
@@ -80,16 +80,33 @@ def is_authorized(msg):
8080

8181
if msg["from"]["id"] in config.config["authorized_users"]:
8282
return True
83+
elif msg["from"]["id"] in config.config["automatically_authorized_users"]:
84+
return True # Para usuários autorizados automaticamente com base no pertencimento
85+
# a grupos. Por ora, só podem ser removidos manualmente
8386
else:
8487
# Como eu não sei a ID de todos os indivíduos romanos, resolvi fazer uma query para ver se o caboclo
8588
# pertence ao chat...
86-
# TODO: Criar um modo de adicionar o caboclo à lista de permissões
87-
if api.isGroupMember(msg["chat"]["id"], msg["from"]["id"]) is True:
89+
90+
if isAuthorizedGroupMember(msg["from"]["id"]) is True:
91+
# Adiciona o indivíduo de vez, economizando essa consulta burra e redundante
92+
config.config["automatically_authorized_users"].append(msg["from"]["id"])
93+
config.save_config()
8894
return True
8995
else:
9096
return False
9197

9298

99+
# Verifica se o caboclo faz parte de algum dos chats autorizados
100+
def isAuthorizedGroupMember(user_id):
101+
102+
for gid in config.config["authorized_chats"]:
103+
if api.isGroupMember(gid, user_id):
104+
return True
105+
106+
return False # Solução estranha, porém funcional e razoavelmente elegante
107+
108+
109+
93110
def msg_matches(msg_text):
94111
for query, plugin in config.plugins.items():
95112
pattern = re.compile(query)

0 commit comments

Comments
 (0)