Gê no Telegram (clone da Vegga / MateBot)

Iuri Guilherme 1871439a40 Requisito de usuário 5 éve
config d783ec2bb2 Alterando nome do plugin qr 5 éve
matebot e2f5c86f1d Aparando e arredondando 5 éve
plugins 1871439a40 Requisito de usuário 5 éve
.gitignore ee9824fb40 Merge remote-tracking branch 'vegga/master' into merging 5 éve
CHANGES.txt ee9824fb40 Merge remote-tracking branch 'vegga/master' into merging 5 éve
LICENSE.md 2fa51ce473 Commit inicial 7 éve
MANIFEST.in 2fa51ce473 Commit inicial 7 éve
Pipfile 659a56744f Atualizando GreatfulBot com MateBot 5 éve
README.md ee9824fb40 Merge remote-tracking branch 'vegga/master' into merging 5 éve
requirements.txt ee9824fb40 Merge remote-tracking branch 'vegga/master' into merging 5 éve
start.py c574bf413f A resposta do bot agora é uma resposta para a mensagem que originou o comando 5 éve

README.md

MateBot

O que

Este é um bot de Telegram baseado em plugins escrito em Python.

MateBot foi feito para o hackerspace Matehackers.

Vegga foi feita para o Velivery.

foi feita para a Greatful.

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.

Uso

Chame o bot em @mate_obot para ver a lista de comandos.

Quem tiver qualquer dúvida pode entrar no grupo do Matehackers no Telegram. Todo mundo lá também tem dúvidas, tu vai te sentir em casa.

Comandos

Atualmente o bot tem os seguintes comandos:

/ajuda

Exibe os atuais comandos do bot. Atualmente quase todos exigem autenticação automática através do controle de acesso por id de usuário do telegram.

Exemplo: /ajuda

/feedback

Envia mensagem para os desenvolvedores do bot.

Exemplo: /feedback Esse bot não funciona!

/qr

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

Fork

Se vossa excelência quiserdes usar o código deste bot pra fazer o vosso próprio, vós deveis:

Entenderdes e usardes a licença GPL v3

Para mais informações, veja o arquivo LICENSE.md.

Aprenderdes a usar git

...e incidentalmente, Github ou Notabug - que são coisas completamente diferentes de git.

Para mexer no código agora mesmo no Linux:

$ git clone -b stable https://github.com/matehackers/tg-matebot.git
$ cd tg-matebot

Dependências

Este bot foi testado com Python 3.5
Se vós não tiverdes Python, instale!

Estamos usando Telepot, então é necessário instalá-lo para rodar o bot.

Tentai pip3 install --user telepot ou python3 -m pip install --user telepot. Ou melhor, pip3 install -r requirements.txt para instalar todas as dependências dos plugins. Se este comando não funcionar, instalai pip.

ICU

Debian:

apt-get install libicu-dev

OSX:

brew install icu4c

Configurando

No diretório config:
Renomeardes o arquivo matebot.cfg.example para .matebot.cfg. Sem este arquivo, o bot não vai funcionar.
Editai o arquivo, alterando o valor de token na seção [botfather] para o valor obtido através do @BotFather.
Alterai os demais campos de configuração de acordo com a necessidade.

Rodando

No diretório principal do matebot:
Se for UNIX, rodeis com ./start.py
Em qualquer plataforma, deveria funcionar com python3 start.py
Para parar, enviai um sinal KeyboardInterrupt (no Linux, CTRL+C).

Administração

Enviai uma mensagem para o bot e prestais atenção no console para descobrir qual é o vosso id do telegram.
Deveria aparecer algo parecido com isto:

[2018-08-24 11:36:49.201162] [INFO] O nosso token do @BotFather é '123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11', os ids de usuária(o)s administradora(e)s são '[123456789]' e os ids dos grupos administradores são '[-987654321]'. O nome de usuário da(o) administrador(a) é '@desobedientecivil'.

Onde 123456789 é o vosso id do telegram. Colocai este número no arquivo de configuração, na seção [admin], item id. O arquivo é config/.matebot.cfg conforme explicado acima, verde Configurando.
Isto possibilita usar comandos especificamente para administração do bot.

Além disto, é possível configurar um id de grupo de administração, que é parecido com -987654321. Este grupo é para onde o bot envia informações de depuração (debug) e onde o comando /feedback envia feedback.

Systemd

Exemplo de arquivo para usar com systemd:

[Unit]
Description=tg-matebot daemon
After=network.target nss-lookup.target

[Service]
Type=simple
ExecStart=/usr/bin/python3 /home/user/tg-matebot/start.py
WorkingDirectory=/home/user/tg-matebot/
Restart=on-failure

[Install]
WantedBy=multi-user.target

Em um sistema Debian, este arquivo deveria estar em /lib/systemd/system/tg-matebot.service, ou ${HOME}/.config/systemd/user/tg-matebot.service.

Habilitando o serviço na inicialização do sistema e iniciando agora:

# systemctl daemon-reload
# systemctl enable tg-matebot.service
# systemctl -l start tg-matebot.service

Para ver se está funcionando:

# systemctl -l status tg-matebot.service

Parar:

# systemctl stop tg-matebot.service

Reiniciar:

# systemctl -l restart tg-matebot.service

Para o caso de usar systemd como usuário, o arquivo de configuração deve estar em ${HOME}/.config/systemd/user/tg-matebot.service, e os comandos devem ser precedidos de --user, como por exemplo:

# systemctl --user -l restart tg-matebot.service

Crontab

Também é possível usar cron para verificar se o bot está no ar periodicamente:

# crontab -e

Adicione uma linha como por exemplo esta na crontab:

*/10 * * * * /usr/lib/systemctl --user is-active tg-matebot.service || /usr/lib/systemctl --user start tg-matebot.service

Isto vai verificar se o bot está no ar a cada 10 minutos, e iniciar o serviço caso esteja fora do ar.

Pipenv

pipenv install
pipenv run python start.py telepot matebot
ExecStart=/home/user/.local/bin/pipenv run python start.py telepot matebot
WorkingDirectory=/home/user/tg-matebot/

Roadmap

TODO

  • Traduzir este README
  • Usar dicionários em todos os retornos de funções
  • Melhorar o empacotamento dos plugins
  • 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
  • Migrar de telepot para python-telegram-bot

Licença

Copyleft 2016-2019 Desobediente Civil, 2017-2019 Matehackers, 2018-2019 Velivery, 2019 Greatful

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/.