-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.py
67 lines (52 loc) · 2.32 KB
/
app.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
import requests
import pandas as pd
import io
import os
import datetime
from flask import Flask, render_template, request
import os
import base64
import json
import gspread
import datetime
spreadsheet_id = os.environ["GOOGLE_SHEET_ID2"]
conteudo_codificado = os.environ["GOOGLE_SHEET_CREDENTIALS1"]
conteudo = base64.b64decode(conteudo_codificado)
credentials = json.loads(conteudo)
service_account = gspread.service_account_from_dict(credentials) # autenticação
spreadsheet = service_account.open_by_key(spreadsheet_id) # "abrir" o arquivo
worksheet = spreadsheet.worksheet("Página1") # aba
app = Flask(__name__)
@app.route("/telegram", methods=["POST"])
def telegram():
# Processa mensagem
datahora = str(datetime.datetime.now())
update = request.json
chat_id = update["message"]["chat"]["id"]
text = update["message"]["text"].lower()
if "username" in update["message"]["from"]:
username = update["message"]["from"]["username"]
else:
username = ""
first_name = update["message"]["from"]["first_name"]
last_name = update["message"]["from"]["last_name"]
#Guarda na planilha a mensagem recebida
worksheet.append_row([datahora, chat_id, "robot", username, first_name, last_name, text])
if text in ['oi', 'olá', 'ola']:
answer = "Oi, como vai?!"
elif text in ['bom dia', 'boa tarde', 'boa noite']:
answer = text
elif "jornalismo" in text:
answer = "No momento eu monitoro na Abraji em jornalismo apenas o projeto que coleta proposições legislativas de interesse do jornalismo brasileiro, veja aqui: https://jornalismonocongresso.herokuapp.com - Em breve eu vou mnonitorar mais projetos e trazer informações aqui :)"
elif "robô" or "robot" or "bot" in text:
answer = "Sim, pois é, sou um robot :) Mas com uma limitação de respostas. Se você tem mais dúvidas sobre o trabalho da Abraji escreva para: abraji@abraji.org.br"
else:
answer = "Desculpe, não entendi. Sou um robô com uma limitação de respostas. Se você tem mais dúvidas sobre o trabalho da Abraji escreva para: abraji@abraji.org.br"
# Responde mensagem
token = os.environ["TELEGRAM_TOKEN"]
message = {"chat_id": chat_id, "text": answer}
url = f"https://api.telegram.org/bot{token}/sendMessage"
response = requests.post(url, data=message)
if response.json()["ok"] == False:
raise RuntimeError("Erro ao responder API do Telegram")
return "ok"