- Notifications
You must be signed in to change notification settings - Fork6
matehackers/matebot
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Archiving notice / Aviso de arquivamento: Development active at / Desenvolvimento continua emhttps://github.com/iuriguilherme/iacecil
There is no english README. Sorry about that, I am having a mean time. Justlearn brazilian portuguese in the meantime.
Este é umbot de Telegram baseado em pluginsescrito emPython.
Chame o bot em@mate_obot para ver a lista decomandos.
Quem tiver qualquer dúvida pode entrar nogrupo 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 oHackerspace 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. Otexto pode ser qualquer coisa.
Exemplo:/qr https://matehackers.org
Alias:/qrcode
Gera um número pseudo aleatório bom para criptografia. É possível definir otamanho da semente como parâmetro.
Exemplos:/random
ou/random 32
Alias:/r
Gera uma boa aproximação depi.
Gera uma boa aproximação dephi.
Faz download de vídeos ou áudios a partir de URLs suportadas peloyoutube-dl e envia como vídeo ouáudio por mensagem de telegram.
Aliases:/y
/ytdl
Arquiva um site naWayback Machine.
Exemplo:/arquivar https://matehackers.org
Aliases:/a
/wm
/archive
MateBot foi feito para o hackerspaceMatehackers.
Vegga foi feita para oVelivery.
Matebot por sua vez é clonado deCryptoForexBot.
Todos estes bots são inspirados naPaloma,originalmente um bot de IRC inspirado nalalenia, que é umsupybot. Viva o software livre.
Ver também o arquivoCHANGES.TXT
Nível de automata:combinational logic
- Bot deve responder comandos com valores pré definidos
- Bot pode ter personalidade fixa configurada previamente e que vaiperdurar durante todo o seu funcionamento
- Novas funcionalidades podem ser acrescentadas através de plugins
- Funcionalidades podem ser ativadas ou desativadas de acordo compersonalidade 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ãov0.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áveisconforme aprendizado prévio
- Bot deve ter personalidade configurada no estado inicial que pode variare humor que deve variar
- Funcionalidades podem ser ativadas ou desativadas de acordo com mudançade 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 dedados
- Usa dados obtidos para tomar decisões e adicionar pessoas em grupos deacordo 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-bottag v0.1.0.0a
- Acrescentar também código para usar com aiogramtag v0.1.3.0
- Tratar as exceções corretamente, principalmente as informativas
- Exceções informativas para quem está tentando instalar o bot dozero suficientemente tratadas e suficientemente informativas comcommit 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 vossopróprio, vós deveis:
Para mais informações, veja o arquivoLICENSE.md.
...e incidentalmente, Github ou Notabug - que são coisas completamentediferentes 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 pipenvuser@home:~/matebot$ pipenv installuser@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 usandoAiogram,Flask ePython Telegram Bot,então é necessário instalá-los para rodar o bot.
Ritual de instalação:
O jeito mais fácil de todos é usarpipenv, inclusiveestá 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 outrométodo de preferência se souber o que está fazendo. Um arquivorequirements.txt
é mantido atualizado no repositório.
user@home:~/matebot$ python3 -m ensurepipuser@home:~/matebot$ python3 -m pip install --user --upgrade pipuser@home:~/matebot$ python3 -m pip install --user -r requirements.txt
TODO: Fazer instruções para usar sem pipenv
Criar o diretórioinstance:
user@home:~/matebot$ mkdir instance
Renomear o arquivodoc/default_config.py
parainstance/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 valorobtido 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",
Onde123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11 deve ser substituída com atoken providenciada pelo BotFather.
Uma forma alternativa de alterar este campo é diretamente na linha de comandousando 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, cadaopção está comentada no arquivo de configuração de exemplodoc/default_config.py
.
TODO: Documentar exemplos de uso do arquivo de configuração para um bot ouvários bots
Para usar a versão com Flask (ou Quart), é necessário também renomear o arquivodoc/default_env
para.env
. Ou criar um arquivo.env
com as variáveisFLASK_APP eFLASK_ENV (ouQUART_APP /QUART_ENV).
No diretório principal domatebot:
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 arquivode 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 scriptapp.py
que vai tentar encontrar os módulos e arquivos de configuraçãopertinentes. Alguns exemplos:
user@home:~/matebot$ python3 start.py aiogram matebot
C:\Users\user\tg-matebot> Python start.py flask matebot
Para parar, enviar um sinalKeyboardInterrupt (CTRL+C).
Exemplo de arquivo para usar com systemd:
[Unit]Description=MateBot daemonAfter=network.target nss-lookup.target[Service]Type=simpleExecStart=/home/user/.local/bin/pipenv run matebotWorkingDirectory=/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 --userenable 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 utilizadossem 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çocaso esteja fora do ar.
Adicione seu token emBOTFATHER_TOKEN
no arquivodoc/default_env
e depois rode os comandos abaixo na raiz do projeto
docker build -t matebot -f Dockfile.docker run -d --name matebot matebotdocker inspect matebot| grep IPAddress
Após esses comandos você terá o IP do seu container pegue esse IP e acesse viaCURL IP:5000
Existem usuária(o)s do bot que usam Heroku e Python Anywhere solicitando ajudapara configurar o robô nestes serviços. Eu nunca usei nada disto então precisode 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, vejahttp://www.gnu.org/licenses/.