Commit 9ed7a169 authored by Jan Luc Tavares's avatar Jan Luc Tavares
Browse files

adicionadas funcionalidades de inserção e remoção de inscrição no banco de dados

parent af12619c
......@@ -18,13 +18,13 @@ class DBHelper:
self.conn.execute(stmt, args)
self.conn.commit()
def delete_item(self, usuario, estacao, grupo):
stmt = "DELETE FROM opcoes WHERE usuarios = (?) AND estacoes = (?) AND grupos = (?)"
args = (usuario,estacao, grupo)
def delete_item(self, usuario, grupo):
stmt = "DELETE FROM opcoes WHERE usuarios = (?) AND grupos = (?)"
args = (usuario, grupo)
self.conn.execute(stmt, args)
self.conn.commit()
def get_items(self, usuario, grupo):
stmt = "SELECT estacoes FROM opcoes where usuarios=(?) AND grupos = (?)"
stmt = "SELECT estacoes FROM opcoes WHERE usuarios=(?) AND grupos = (?)"
args = (usuario, grupo)
return [x[0] for x in self.conn.execute(stmt)]
return [x[0] for x in self.conn.execute(stmt, args)]
......@@ -15,6 +15,7 @@
import json
import requests
import time
import os
import urllib #biblioteca necessaria para a codificacao do texto em forma de url
from dbhelper import DBHelper
from secretoken import tokensecret
......@@ -85,52 +86,73 @@ def send_message(text, chat_id, reply_markup=None):
url += "&reply_markup={}".format(reply_markup)
get_url(url)
def build_keyboard(items):
'''
Constroi JSON que informa o Telegram qual deve ser o teclado personalizado.
'''
keyboard = [[item] for item in items]
reply_markup = {"keyboard":keyboard, "one_time_keyboard": True}
return json.dumps(reply_markup)
############# Respostas as entradas do usuario ########################
# Imagino que essas respostas poderiam estar mais bem "compartimentadas", mas nao sei como fazer isso.
#######################################################################
def boas_vindas(chat_id):
def boas_vindas(chat_id, entrada=None):
text = "Oi!\nVocê está falando com o Bot das Estações Meteorológicas Modulares\nReceba minhas sinceras boas-vindas!\nConfira os comandos em /ajuda"
url = URL + "sendMessage?text={}&chat_id={}".format(text, chat_id)
get_url(url)
send_message(text, chat_id)
def ajuda(chat_id):
def ajuda(chat_id,entrada=None):
text="Comandos: \n/start - Boas-vindas\n/ajuda - Receba essa lista de comandos\n/selecionar - Selecione a estacao de seu interesse\n/tchau - Cancele o recebimento das minhas mensagens \n\nDepois de escolher a estação, você poderá escolher o perído de tempo para visualizar dados e selecionar o tipo de dado de seu interesse \n/ultimo - Veja a última medida realizada\n/dia - Veja a medida do último dia\n/semana - Veja a medida da ultima semana\n/mes - Veja a medida do último mês"
url = URL + "sendMessage?text={}&chat_id={}".format(text, chat_id)
get_url(url)
def sel_emm(chat_id):
text = "Ainda nao tenho essa funcionalidade :( \n me desgupe \n hashtag xatiado" #placeholder apenas
url = URL + "sendMessage?text={}&chat_id={}".format(text, chat_id)
get_url(url)
send_message(text, chat_id)
def sel_emm1(chat_id,entrada=None):
text = "Selecione a estação que você deseja receber os dados"
ids,estacoes = lista_emm()
for item in estacoes:
estacoes[estacoes.index(item)] = "estação " + item
keyboard = build_keyboard(estacoes)
send_message(text, chat_id,keyboard)
def sel_emm2(chat_id, entrada=None):
ids,estacoes = lista_emm()
escolha = entrada.split()[1] # separa a estacao escolhida
try:
idemm = ids[estacoes.index(escolha)] # Id da estacao escolhida]
print (idemm)
db.delete_item(chat_id, 'padrao') #deleta antes para garantir que nao ha duplicado
db.add_item(chat_id, idemm, 'padrao') #Acrescenta a estacao ao grupo 'padrao': ele existe para futuras funcionalidades.
text = "Selecionado com sucesso!"
except:
text = "Não encontrei essa estação no sistema"
send_message(text,chat_id)
def tchau(chat_id,entrada=None):
text = "Tchau, você não receberá mais minhas mensagens."
db.delete_item(chat_id, 'padrao')
send_message(text,chat_id)
def tchau(chat_id):
def ultimo(chat_id,entrada=None):
text = "Ainda nao tenho essa funcionalidade :( \n me desgupe \n hashtag xatiado" #placeholder apenas
url = URL + "sendMessage?text={}&chat_id={}".format(text, chat_id)
get_url(url)
send_message(text,chat_id)
def ultimo(chat_id):
text = "Ainda nao tenho essa funcionalidade :( \n me desgupe \n hashtag xatiado" #placeholder apenas
url = URL + "sendMessage?text={}&chat_id={}".format(text, chat_id)
get_url(url)
def dia(chat_id):
def dia(chat_id,entrada=None):
text = "Ainda nao tenho essa funcionalidade :( \n me desgupe \n hashtag xatiado" #placeholder apenas
url = URL + "sendMessage?text={}&chat_id={}".format(text, chat_id)
get_url(url)
def semana(chat_id):
send_message(text,chat_id)
def semana(chat_id,entrada=None):
text = "Ainda nao tenho essa funcionalidade :( \n me desgupe \n hashtag xatiado" #placeholder apenas
url = URL + "sendMessage?text={}&chat_id={}".format(text, chat_id)
get_url(url)
send_message(text,chat_id)
def mes(chat_id):
def mes(chat_id,entrada=None):
text = "Ainda nao tenho essa funcionalidade :( \n me desgupe \n hashtag xatiado" #placeholder apenas
url = URL + "sendMessage?text={}&chat_id={}".format(text, chat_id)
get_url(url)
send_message(text,chat_id)
entradas = { "/start" : boas_vindas,
"/ajuda": ajuda ,
"/selecionar": sel_emm,
"/selecionar": sel_emm1,
"estação":sel_emm2,
"/tchau": tchau,
"/ultimo": ultimo,
"/dia": dia,
......@@ -140,6 +162,22 @@ entradas = { "/start" : boas_vindas,
# Fim da definicao de respostas possiveis
#############################################################################
def lista_emm():
endereco = os.getcwd() + "/estacoes_existentes.txt" #os.getcwd() retora o diretorio corrente de trabalho.
num = []
nome = []
arq = open(endereco)
for line in arq:
li=line.strip()
if (not li.startswith("#")) : #ignora linhas com comentarios
li = li.split()
num.append(li[0][3:])
nome.append(li[2][9:-1])
arq.close()
return num, nome
#############################################################################
def handle_updates(updates):
......@@ -149,22 +187,16 @@ def handle_updates(updates):
for update in updates["result"]:
try:
text = update["message"]["text"]
palavras = text.split()
chat = update["message"]["chat"]["id"]
# items = db.get_items()
entradas[text](chat)
entradas[palavras[0]](chat, text)
except KeyError:
text = "Ainda não sei o que quer dizer isso \nSó sei o que está em /ajuda :("
url = URL + "sendMessage?text={}&chat_id={}".format(text, chat)
get_url(url)
chat = update["message"]["chat"]["id"]
send_message(text,chat,None)
pass
def build_keyboard(items):
'''
Constroi JSON que informa o Telegram qual deve ser o teclado personalizado.
'''
keyboard = [[item] for item in items]
reply_markup = {"keyboard":keyboard, "one_time_keyboard": True}
return json.dumps(reply_markup)
def main():
......
<option value="-1"></option><option value="1">id=1 usuário="admin" estação="PezziProto"</option><option value="2">id=2 usuário="admin" estação="CTA_Pi+RMv0.1"</option><option value="3">id=3 usuário="admin" estação="AP-CEU"</option><option value="4">id=4 usuário="nelsojost" estação="ADay16-RMv0.1"</option><option value="5">id=5 usuário="nelsojost" estação="teste"</option><option value="6">id=6 usuário="hiure" estação="Sitio do Astronauta"</option><option value="7">id=7 usuário="nelsojost" estação="teste_campo_bom"</option><option value="8">id=8 usuário="Luis.f" estação="CTA_Jr_Teste"</option><option value="17">id=17 usuário="Luis.f" estação="Estação_Setembro"</option><option value="18">id=18 usuário="Luis.f" estação="teste2"</option><option value="22">id=22 usuário="yatokami" estação="Teste CTA jr 12/16"</option><option value="23">id=23 usuário="admin" estação="rafa-hcpa"</option><option value="24">id=24 usuário="IgorGusmao" estação="Gilberto DÀvila Yag"</option>
id=1 usuário="admin" estação="PezziProto"
id=2 usuário="admin" estação="CTA_Pi+RMv0.1"
id=3 usuário="admin" estação="AP-CEU"
id=4 usuário="nelsojost" estação="ADay16-RMv0.1"
id=5 usuário="nelsojost" estação="teste"
id=6 usuário="hiure" estação="Sitio_do_Astronauta"
id=7 usuário="nelsojost" estação="teste_campo_bom"
id=8 usuário="Luis.f" estação="CTA_Jr_Teste"
id=17 usuário="Luis.f" estação="Estação_Setembro"
id=18 usuário="Luis.f" estação="teste2"
id=22 usuário="yatokami" estação="Teste_CTA_jr_12/16"
id=23 usuário="admin" estação="rafa-hcpa"
id=24 usuário="IgorGusmao" estação="Gilberto_DÀvila_Yag"
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment