-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbot.py
115 lines (77 loc) · 4.02 KB
/
bot.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
import logging
import os
import requests
import json
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext
from texts import get_manual_do_membro
TOKEN = os.environ['TELEGRAM_TOKEN']
PORT = int(os.environ.get("PORT", "8443"))
HEROKU_APP_NAME = os.environ.get("bot-telegram-turing")
# Enable logging
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.INFO)
logger = logging.getLogger(__name__)
# /help
def send_help(update, context):
update.message.reply_text("Comandos: /quant; /nlp; /cv; /rl; /ds; /gpt2; /qa")
# Descrição das Areas de foco
# /quant
def send_quant_describe(update, context):
update.message.reply_text('Essa área de foco tem como principal objetivo estudar as aplicações de programação no mercado financeiro, através de determinadas plataformas. Buscamos, juntos, aprender tanto sobre mercado financeiro quanto sobre aplicações e métodos quantitativos utilizados nesse mercado.')
# /nlp
def send_nlp_describe(update, context):
update.message.reply_text('Processamento de Linguagem Natural é uma área da inteligência artificial cujo objetivo é a interpretação e manipulação de linguagens humanas. NLP tem muitas tarefas, algumas se relacionam ao processamento mais imediato dos componentes linguísticos, como a análise sintática, morfossintática (POS Tagging), lematização etc.')
# /cv
def send_cv_describe(update, context):
update.message.reply_text('Em Computer Vision (ou Visão Computacional) trabalhamos principalmente com o processamento de imagens.')
# /rl
def send_rl_describe(update, context):
update.message.reply_text('O Aprendizado por Reforço é uma das áreas mais únicas do Aprendizado de Máquina, fundamentada em ensinar a um agente como agir em um ambiente a partir de suas experiências.')
# /ds
def send_ds_describe(update, context):
update.message.reply_text('Data Science (ou Ciência de Dados) é sobre obter insights ou conhecimento através do estudo e análise de dados')
# /start
def send_welcome(update, context):
update.message.reply_text("Salve, Salve Grupo Turing!")
def error(update, context):
"""Log Errors caused by Updates."""
logger.warning('Update "%s" caused error "%s"', update, context.error)
def gpt2_reply(update, context):
GPT2_API_URL = "https://api-inference.huggingface.co/models/pierreguillou/gpt2-small-portuguese"
payload_input_text = json.dumps(update.message.text)
response = requests.post(GPT2_API_URL, payload_input_text)
text = str(response.json()[0])[20:-2]
update.message.reply_text(text)
def turing_qa(update, context):
API_URL = "https://api-inference.huggingface.co/models/mrm8488/bert-base-portuguese-cased-finetuned-squad-v1-pt"
payload = json.dumps({
"context": get_manual_do_membro(),
"question": update.message.text
})
response = requests.post(API_URL, payload)
update.message.reply_text(response.json()['answer'])
def main():
logger.info("Bot started")
updater = Updater(
TOKEN, use_context=True)
dp = updater.dispatcher
logger.info("working till here")
dp.add_handler(CommandHandler("start", send_welcome))
dp.add_handler(CommandHandler("help", send_help))
dp.add_handler(CommandHandler("quant", send_quant_describe))
dp.add_handler(CommandHandler("nlp", send_nlp_describe))
dp.add_handler(CommandHandler("ds", send_ds_describe))
dp.add_handler(CommandHandler("cv", send_cv_describe))
dp.add_handler(CommandHandler("rl", send_rl_describe))
dp.add_handler(CommandHandler("gpt2", gpt2_reply))
dp.add_handler(CommandHandler("qa", turing_qa))
dp.add_error_handler(error)
updater.start_webhook(listen="0.0.0.0",
port=PORT,
url_path=TOKEN)
updater.bot.set_webhook("https://bot-telegram-turing.herokuapp.com/" + TOKEN)
logger.info("Listening for messages...")
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()