Archiving notice / Aviso de arquivamento: Development active at / Desenvolvimento continua em https://github.com/iuriguilherme/iacecil
There is no english README. Sorry about that, I am having a mean time. Just learn brazilian portuguese in the meantime.
Este é um bot de Telegram baseado em plugins escrito em Python.
Chame o bot em @mate_obot para ver a lista de comandos.
Quem tiver qualquer dúvida pode entrar no grupo do MateBot no Telegram. Todo mundo lá também tem dúvidas, tu vai te sentir em casa.
Atualmente o bot tem os seguintes comandos:
Exibe os atuais comandos do bot.
Aliases: /help
/ajuda
Exibe informações sobre como ajudar financeiramente o Hackerspace Matehackers.
Alias: /donate
Envia mensagem para os desenvolvedores do bot. É necessário enviar um texto.
Exemplo: /feedback Esse bot não funciona!
Alias: /f
Cria uma imagem png com um QR code representando o texto que foi enviado. O texto pode ser qualquer coisa.
Exemplo: /qr https://matehackers.org
Alias: /qrcode
Gera um número pseudo aleatório bom para criptografia. É possível definir o tamanho da semente como parâmetro.
Exemplos: /random
ou /random 32
Alias: /r
Gera uma boa aproximação de pi.
Gera uma boa aproximação de phi.
Faz download de vídeos ou áudios a partir de URLs suportadas pelo youtube-dl e envia como vídeo ou áudio por mensagem de telegram.
Aliases: /y
/ytdl
Arquiva um site na Wayback Machine.
Exemplo: /arquivar https://matehackers.org
Aliases: /a
/wm
/archive
MateBot foi feito para o hackerspace Matehackers.
Vegga foi feita para o Velivery.
Matebot por sua vez é clonado de
CryptoForexBot.
Todos estes bots são inspirados na Paloma,
originalmente um bot de IRC inspirado na
lalenia, que é um
supybot. Viva o software livre.
Ver também o arquivo CHANGES.TXT
Nível de automata: combinational logic
- Bot deve responder comandos com valores pré definidos
- Bot pode ter personalidade fixa configurada previamente e que vai perdurar durante todo o seu funcionamento
- Novas funcionalidades podem ser acrescentadas através de plugins
- Funcionalidades podem ser ativadas ou desativadas de acordo com personalidade ou finalidade do bot
- Sistema de log para depuração
- Geração de QR Code
- Download de vídeos do Youtube
- Geração de números aleatórios
- Cálculo de hash de textos
- Recepção de novos usuários em grupos no Telegram
- Salvar URLs na Wayback Machine
Funcionalidades presentes em forks ou versão v0.0.14
- Conversão de valores [coinmarketcap] (cryptoforex)
- Integração com bancos de dados externos [velivery] (vegga)
- Envio de SMS e realização de ligações telefônicas [totalvoice] (vegga)
- Sistema auxiliar para produção de alimentos [cr1pt0_almoco]
- Integração com ESP32 e monitoramento climático (climobike)
- Controle de atividades de trabalho [workrave] (gê)
Nível de automata: finite-state machine
- Bot deve responder comandos de acordo com regras fixas e variáveis conforme aprendizado prévio
- Bot deve ter personalidade configurada no estado inicial que pode variar e humor que deve variar
- Funcionalidades podem ser ativadas ou desativadas de acordo com mudança de personalidade, humor ou evento de aprendizado
- Sistema de coleta de dados para machine learning
- Bot deve funcionar no Telegram e no Discord
- Faz questionários para usuários e armazena as informações em banco de dados
- Usa dados obtidos para tomar decisões e adicionar pessoas em grupos de acordo com critérios estabelecidos
- Cria perfil de pessoas através de análise de respostas
- Otimiza perfil de pessoas através de análise de comportamento
- Traduzir este README
- Translate the README back to English, Pedro Bó
- Usar dicionários em todos os retornos de funções
- Melhorar o empacotamento dos plugins
- Migrar de telepot para python-telegram-bot tag v0.1.0.0a
- Acrescentar também código para usar com aiogram tag v0.1.3.0
- Tratar as exceções corretamente, principalmente as informativas
- Exceções informativas para quem está tentando instalar o bot do zero suficientemente tratadas e suficientemente informativas com commit 367613a
- Usar Exception Handling do python-telegram-bot
- Arquivos para usar com Heroku
- Arquivos para usar com Docker
- Documentar o roadmap com issues, milestones e projetos do github
- Issues feitas durante uma Terça Sem Fim
Se vossa excelência quiserdes usar o código deste bot pra fazer o vosso próprio, vós deveis:
Para mais informações, veja o arquivo LICENSE.md.
...e incidentalmente, Github ou Notabug - que são coisas completamente diferentes de git.
Para mexer no código agora mesmo no Linux:
user@home:~$ git clone https://github.com/matehackers/matebot.git
user@home:~$ cd matebot
user@home:~/matebot$ python3 -m pip install --user --upgrade pip pipenv
user@home:~/matebot$ pipenv install
user@home:~/matebot$ pipenv run matebot
Eu criei um grupo novo para quem quiser conversar sobre, usar, testar, desenvolver e acompanhar o processo de desenvolvimento, teste e uso do bot: https://t.me/joinchat/CwFUFkf-dKW34FPBjEJs9Q
Grupo só para testar bots (pode gerar o caos): https://t.me/joinchat/CwFUFhbgApLHBMLoNnkiRg
Grupo para testar o plugin de logs: https://t.me/joinchat/CwFUFhy2NQRi_9Cc60v_aA
Pra testar o plugin de logs, coloque o bot neste grupo e use o chat_id
-481703172
no arquivo de configuração (bot.users['special']['log'])
Este bot foi testado com Python 3.7 e 3.8; Se vós não tiverdes Python, instale!
Estamos usando Aiogram, Flask e Python Telegram Bot, então é necessário instalá-los para rodar o bot.
Ritual de instalação:
O jeito mais fácil de todos é usar pipenv, inclusive está incluso o Pipfile no repositório:
user@home:~/matebot$ python3 -m ensurepip
user@home:~/matebot$ python3 -m pip install --user --upgrade pip pipenv
user@home:~/matebot$ pipenv install
Quem não quiser usar pipenv pode usar virtualenvwrapper, virtualenv ou outro
método de preferência se souber o que está fazendo. Um arquivo
requirements.txt
é mantido atualizado no repositório.
user@home:~/matebot$ python3 -m ensurepip
user@home:~/matebot$ python3 -m pip install --user --upgrade pip
user@home:~/matebot$ python3 -m pip install --user -r requirements.txt
TODO: Fazer instruções para usar sem pipenv
Criar o diretório instance:
user@home:~/matebot$ mkdir instance
Renomear o arquivo doc/default_config.py
para instance/config.py
.
user@home:~/matebot$ cp doc/default_config.py instance/config.py
Editar o arquivo de configuração, pelo menos adicionando tokens para o valor obtido através do @BotFather.
A parte da configuração que é necessário alterar se parece com isto:
'matebot': {
## Obtenha um token com @BotFather no Telegram
'token': "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11",
Onde 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11 deve ser substituída com a token providenciada pelo BotFather.
Uma forma alternativa de alterar este campo é diretamente na linha de comando usando sed:
user@home:~/matebot$ TOKEN="654321:ZXC-VBN4321ghIkl-zyx57W2v1u123ew11"; sed -i 's/123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/'${TOKEN}'/g' instance/config.py
Alterar os demais campos de configuração de acordo com a necessidade, cada
opção está comentada no arquivo de configuração de exemplo
doc/default_config.py
.
TODO: Documentar exemplos de uso do arquivo de configuração para um bot ou vários bots
Para usar a versão com Flask (ou Quart), é necessário também renomear o arquivo
doc/default_env
para .env
. Ou criar um arquivo .env
com as variáveis
FLASK_APP e FLASK_ENV (ou QUART_APP / QUART_ENV).
No diretório principal do matebot:
Para rodar com pipenv, assumindo que a configuração já está correta:
user@home:~/matebot$ pipenv run matebot
Se tiver mais bots configurados, informar o nome da chave do token do arquivo de configuração:
user@home:~/matebot$ pipenv run matebot production
O método anterior para usar Flask e python-telegram-bot:
user@home:~/matebot$ pipenv run ptb
O método antigo pra usar telepot (não recomendado):
user@home:~/matebot$ pipenv run telepot
Quem estiver usando outra coisa que não seja pipenv, pode usar o script
app.py
que vai tentar encontrar os módulos e arquivos de configuração
pertinentes. Alguns exemplos:
user@home:~/matebot$ python3 start.py aiogram matebot
C:\Users\user\tg-matebot> Python start.py flask matebot
Para parar, enviar um sinal KeyboardInterrupt (CTRL+C).
Exemplo de arquivo para usar com systemd:
[Unit]
Description=MateBot daemon
After=network.target nss-lookup.target
[Service]
Type=simple
ExecStart=/home/user/.local/bin/pipenv run matebot
WorkingDirectory=/home/user/matebot/
Restart=on-failure
[Install]
WantedBy=multi-user.target
Em um sistema Debian, este arquivo deveria estar em
${HOME}/.config/systemd/user/matebot.service
.
Habilitando o serviço na inicialização do sistema e iniciando agora:
user@home:~$ systemctl --user daemon-reload
user@home:~$ systemctl --user enable matebot.service
user@home:~$ systemctl --user -l start matebot.service
Para ver se está funcionando:
user@home:~$ systemctl --user -l status matebot.service
Parar:
user@home:~$ systemctl --user stop matebot.service
Remover da inicialização:
user@home:~$ systemctl --user disable matebot.service
Reiniciar:
user@home:~$ systemctl --user -l restart matebot.service
Para o caso de usar systemd como root, o arquivo de configuração deve estar em
/lib/systemd/system/matebot.service
, e os comandos devem ser utilizados
sem o --user
, como por exemplo:
root@home:/root# systemctl -l restart matebot.service
Mas eu não recomendo esta abordagem.
Também é possível usar cron para verificar se o bot está no ar periodicamente:
user@home:~$ crontab -e
Adicione uma linha como por exemplo esta na crontab:
*/10 * * * * /usr/lib/systemctl --user is-active matebot.service || /usr/lib/systemctl --user restart matebot.service
Isto vai verificar se o bot está no ar a cada 10 minutos, e reiniciar o serviço caso esteja fora do ar.
Adicione seu token em BOTFATHER_TOKEN
no arquivo doc/default_env
e depois rode os comandos abaixo na raiz do projeto
docker build -t matebot -f Dockfile .
docker run -d --name matebot matebot
docker inspect matebot | grep IPAddress
Após esses comandos você terá o IP do seu container pegue esse IP e acesse via CURL IP:5000
Existem usuária(o)s do bot que usam Heroku e Python Anywhere solicitando ajuda para configurar o robô nestes serviços. Eu nunca usei nada disto então preciso de ajuda para tal feito.
Copyleft 2012-2020 Iuri Guilherme, 2017-2020 Matehackers, 2018-2019 Velivery, 2019 Greatful, 2019-2020 Fábrica do Futuro
Este programa é um software livre; você pode redistribuí-lo e/ou
modificá-lo sob os termos da Licença Pública Geral GNU como publicada
pela Free Software Foundation; na versão 3 da Licença, ou
(a seu critério) qualquer versão posterior.
Este programa é distribuído na esperança de que possa ser útil,
mas SEM NENHUMA GARANTIA; sem uma garantia implícita de ADEQUAÇÃO
a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a
Licença Pública Geral GNU para mais detalhes.
Você deve ter recebido uma cópia da Licença Pública Geral GNU junto
com este programa (veja o arquivo LICENSE.md).
Se não, veja http://www.gnu.org/licenses/.