-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathapp.py
148 lines (126 loc) · 5.34 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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
import os
import gspread
import requests
from flask import Flask, request
from oauth2client.service_account import ServiceAccountCredentials
import pandas as pd
import openpyxl
from sendgrid import SendGridAPIClient
from sendgrid.helpers.mail import Mail, Email, To, Content
SENDGRID_KEY = os.environ["API_SENDGRID"]
TELEGRAM_API_KEY = os.environ["TELEGRAM_API_KEY"]
TELEGRAM_ADMIN_ID = os.environ["TELEGRAM_ADMIN_ID"]
GOOGLE_SHEETS_CREDENTIALS = os.environ["GOOGLE_SHEETS_CREDENTIALS"]
with open("credenciais.json", mode="w") as arquivo:
arquivo.write(GOOGLE_SHEETS_CREDENTIALS)
conta = ServiceAccountCredentials.from_json_keyfile_name("credenciais.json")
api = gspread.authorize(conta)
#Planilhas do bot Campeonato Brasileiro do Telegram
planilha = api.open_by_key("14jvq5dfYVerz8V_xyYIa0DEkSjz1DgwWQcHM7BsOcys")
sheet = planilha.worksheet("CampeonatoBrasileiro")
app = Flask(__name__)
menu = """
<a href="/">Página inicial</a> |
<a href="/campeonato-brasileiro/2021">Campeonato Brasileiro 2021 </a> |
<a href="/campeonato-brasileiro/2020">Campeonato 2020 </a> |
<a href="/campeonato-brasileiro/2019">Campeonato 2019 </a> |
<a href="/campeonato-brasileiro/2018">Campeonato 2018 </a> |
<a href="/campeonato-brasileiro/2017">Campeonato 2017 </a> |
<a href="/campeonato-brasileiro/2016">Campeonato 2016 </a> |
<a href="/campeonato-brasileiro/2015">Campeonato 2015 </a> |
<a href="/campeonato-brasileiro/2014">Campeonato 2014 </a> |
<a href="/campeonato-brasileiro/2013">Campeonato 2013 </a> |
<a href="/campeonato-brasileiro/2012">Campeonato 2012 </a> |
<a href="/campeonato-brasileiro/2011">Campeonato 2011 </a> |
<a href="/sobre">Sobre</a> |
<a href="/contato">Contato</a>
<br>
"""
@app.route("/")
def index():
return menu + "Bem Vindo! Esse site vai te ajudar com dados sobre o Campeonato Brasileiro."
@app.route("/sobre")
def sobre():
return menu + "Aqui você encontra dados sobre todas as temporadas do campeonato Brasileiro que foram disponibilizados pela CBF"
@app.route("/contato")
def contato():
return menu + "Para saber mais detalhes, mande um oi no usuário Dados Campeonato Brasileiro, no Telegram"
@app.route("/campeonato-brasileiro/<ano>")
def campeonato_brasileiro(ano):
df = pd.read_excel('https://github.com/SerginhoVN/Trabalho-Final-Campeonato-Brasileiro/raw/main/Jogos_Temporada_%20Todas%20as%20Temporadas_SerieAB.xlsx', engine='openpyxl')
df = df[df["Temporada"] == int(ano)]
html = f"<h1>{ano}</h1>"
html += df.to_html()
return html
@app.route("/dedoduro")
def dedoduro():
mensagem = {"chat_id": TELEGRAM_ADMIN_ID, "text": "Alguém acessou a página dedo duro!"}
resposta = requests.post(f"https://api.telegram.org/bot{TELEGRAM_API_KEY}/sendMessage", data=mensagem)
return f"Mensagem enviada. Resposta ({resposta.status_code}): {resposta.text}"
@app.route("/dedoduro2")
def dedoduro2():
sheet.append_row(["Sérgio", "Vieira", "a partir do Flask"])
return "Planilha escrita!"
#Telegram
@app.route("/campeonatobrasileiro-bot", methods=["POST"])
def campeonatobrasileiro_bot():
update = request.json
chat_id = update["message"]["chat"]["id"]
message = update["message"]["text"]
times = ['Palmeiras',
'Flamengo',
'Corinthians',
'Sao Paulo',
'Atletico Mineiro',
'Internacional',
'Ceara',
'Bahia',
'Athletico Paranaense',
'Chapecoense',
'Cuiaba',
'Fluminense',
'Santos',
'America-MG',
'Gremio',
'Fortaleza',
'Sport',
'Red Bull Bragantino',
'Juventude',
'Atletico-GO']
texto_resposta_time = None
if message == "Oi":
texto_resposta = "Olá! Seja bem-vindo(a). Qual time você gostaria de saber os resultados na temporada?"
elif message in times:
df = pd.read_excel('https://github.com/SerginhoVN/Trabalho-Final-Campeonato-Brasileiro/raw/main/Jogos_Temporada_%20Todas%20as%20Temporadas_SerieAB.xlsx')
dffiltrado = df[(df.Mandante == message) | (df.Visitante == message)]
atual = dffiltrado["Temporada"].max()
dffiltrado = dffiltrado[dffiltrado["Temporada"] == atual]
texto_resposta_time = f"Aqui estão os resultados do {message} na temporada {atual}:\n\n"
jogos = dffiltrado.to_dict('records')
for jogo in jogos:
texto_resposta_time += f"Rodada: {jogo['Rodada']} - {jogo['Mandante']} {jogo['Placar']} {jogo['Visitante']}\n"
texto_resposta_time += f"Quer receber por email? informe seu email."
elif "@" in message:
texto_resposta = "Obrigado! Vamos te cadastrar para receber as informações solicitadas"
email = Mail(
from_email='serginhosp21@gmail.com',
to_emails=message,
subject='Campeonato Brasileiro',
html_content = f"Confira as últimas rodadas do seu time"
)
print(texto_resposta_time)
sg = SendGridAPIClient(SENDGRID_KEY)
response = sg.send(email)
else:
texto_resposta = "Não entendi! Diga 'oi' para começar."
if texto_resposta_time:
texto_resposta = texto_resposta_time
nova_mensagem = {"chat_id": chat_id, "text": texto_resposta}
requests.post(f"https://api.telegram.org/bot{TELEGRAM_API_KEY}/sendMessage", data=nova_mensagem)
return "ok"
#Sendgrid
@app.route("/send-email")
def send_email():
emails=[]
respostas = sheet.col_values(4)
return "ok"