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
Funcionalidades presentes em forks ou versão v0.0.14
Nível de automata: finite-state machine
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:
bash
[email protected]:~$ git clone https://github.com/matehackers/matebot.git
[email protected]:~$ cd matebot
[email protected]:~/matebot$ python3 -m pip install --user --upgrade pip pipenv
[email protected]:~/matebot$ pipenv install
[email protected]:~/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:
bash
[email protected]:~/matebot$ python3 -m ensurepip
[email protected]:~/matebot$ python3 -m pip install --user --upgrade pip pipenv
[email protected]:~/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.
bash
[email protected]:~/matebot$ python3 -m ensurepip
[email protected]:~/matebot$ python3 -m pip install --user --upgrade pip
[email protected]:~/matebot$ python3 -m pip install --user -r requirements.txt
TODO: Fazer instruções para usar sem pipenv
Criar o diretório instance:
bash
[email protected]:~/matebot$ mkdir instance
Renomear o arquivo doc/default_config.py
para instance/config.py
.
bash
[email protected]:~/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:
python
'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:
bash
[email protected]:~/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:
bash
[email protected]:~/matebot$ pipenv run matebot
Se tiver mais bots configurados, informar o nome da chave do token do arquivo de configuração:
bash
[email protected]:~/matebot$ pipenv run matebot production
O método anterior para usar Flask e python-telegram-bot:
bash
[email protected]:~/matebot$ pipenv run ptb
O método antigo pra usar telepot (não recomendado):
bash
[email protected]:~/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:
bash
[email protected]:~/matebot$ python3 start.py aiogram matebot
bat
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:
```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:
bash
[email protected]:~$ systemctl --user daemon-reload
[email protected]:~$ systemctl --user enable matebot.service
[email protected]:~$ systemctl --user -l start matebot.service
Para ver se está funcionando:
bash
[email protected]:~$ systemctl --user -l status matebot.service
Parar:
bash
[email protected]:~$ systemctl --user stop matebot.service
Remover da inicialização:
bash
[email protected]:~$ systemctl --user disable matebot.service
Reiniciar:
bash
[email protected]:~$ 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:
bash
[email protected]:/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:
bash
[email protected]:~$ crontab -e
Adicione uma linha como por exemplo esta na crontab:
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
bash
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/.
Bumps ujson from 4.0.2 to 5.1.0.
Sourced from ujson's releases.
5.1.0
Changed
- Strip debugging symbols from Linux binaries (#493)
@bwoodsend
5.0.0
Added
- Use cibuildwheel to build wheels (#491)
@bwoodsend
Removed
Fixed
4.3.0
Added
- Enable Windows on ARM64 target (#488)
@nsait-linaro
4.2.0
Added
- Add a default keyword argument to dumps (#470)
@garenchan
- Add support for Python 3.10 (#472)
@hugovk
- Build 32-bit wheels for Windows (#481)
@hugovk
- Build PyPy3 wheels for manylinux (#475)
@hugovk
- Build wheels for musl aarch64 (aka ARM) Linux (musllinux_1_1_aarch64) (#478)
@bwoodsend
- Build wheels for musl Linux (musllinux_1_1_x86_64) (#476)
@bwoodsend
Changed
- Use declarative setup metadata (#477)
@hugovk
- Wheel building updates (#473)
@hugovk
- Rename master to main (#471)
@hugovk
- Replace README.rst with Markdown (#479)
@hugovk
4.1.0
Added
- Add gcov coverage testing for C code (#457)
@bwoodsend
- Test Python 3.10-dev (#454)
@hugovk
Changed
- Remove unused variable (#459)
@hugovk
- Remove explicit handling of manylinux platform tag (#452)
@bwoodsend
... (truncated)
682c660
Merge pull request #493 from bwoodsend/strip-binariesc1d5b6d
[pre-commit.ci] auto fixes from pre-commit.com hooksb9275f7
Strip debugging symbols from Linux binaries.e3ccc5a
Merge pull request #492 from hugovk/deploy-twine243d49b
Install Twine to upload to PyPI269621b
Merge pull request #490 from hugovk/rm-3.6cccde3f
Drop support for EOL Python 3.6b55049f
Merge pull request #491 from bwoodsend/switch-to-ci-build-wheels04286a6
Drop wheels for Python 3.6. (#490)ab32d48
CI/CD: Ensure that sdists are uploaded last.Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Bumps urllib3 from 1.26.4 to 1.26.5.
Sourced from urllib3's releases.
1.26.5
:warning: IMPORTANT: urllib3 v2.0 will drop support for Python 2: Read more in the v2.0 Roadmap
- Fixed deprecation warnings emitted in Python 3.10.
- Updated vendored
six
library to 1.16.0.- Improved performance of URL parser when splitting the authority component.
If you or your organization rely on urllib3 consider supporting us via GitHub Sponsors
Sourced from urllib3's changelog.
1.26.5 (2021-05-26)
- Fixed deprecation warnings emitted in Python 3.10.
- Updated vendored
six
library to 1.16.0.- Improved performance of URL parser when splitting the authority component.
d161647
Release 1.26.52d4a3fe
Improve performance of sub-authority splitting in URL2698537
Update vendored six to 1.16.007bed79
Fix deprecation warnings for Python 3.10 ssl moduled725a9b
Add Python 3.10 to GitHub Actions339ad34
Use pytest==6.2.4 on Python 3.10+f271c9c
Apply latest Black formatting1884878
[1.26] Properly proxy EOF on the SSLTransport test suiteDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Além do fato do comando só funcionar com símbolos ser um bug digno de uma issue em separado, quando a gente manda por exemplo /price doge
depois vai dar erro de chave porque no resultado do coinmarketcap o quote é DOGE (nome da chave do dicionário python).
https://www.youtube.com/watch?v=fMRzuwlqfzs&t=280s
Para evitar "mensagem muito longa" ´´e poss´´ivel separar em v´´arios grupos e referenciar com links, ou outro tipo de refer^^encia que seja f´´acil de navegar durante a depuraç~~ao.
Eu acho que ainda escrevo melhor em Perl do que em Python, então essa é a hora de inverter esta afirmação.
```
"NetworkError('File too large for uploading. Check telegram api limits https://core.telegram.org/bots/api#senddocument')" ```
Foi tentando fazer download do vídeo do TextoTecidoTexto: https://www.youtube.com/watch?v=XphySid7iCg
Provável solução, detectar o tamanho do vídeo depois (ou antes?) do download e tentar reduzir a qualidade, ou então separar o arquivo em partes com o próprio ffmpeg.
PS: Fuck the RIAA
Alguns bugs de 1.6 e 1.7 resolvidos
Personalidade cryptoforex - antigo tg-cryptoforexbot reescrita (era a mãe da matebot!)
Bot de exemplo em https://t.me/cryptoforexbot
Na versão atual só funciona o comando /price
Por exemplo: /price ETH
MateBot com personalidades!
Cada personalidade vai responder alguns comandos sobrescritos de uma forma diferente. Além dos recursos do Telegram (definir nome, fotografia e descrição), a linguagem da bot agora é mutável através da configuração bot.info['personalidade']
(no arquivo de configuração: config.default_bot['info']['personalidade']
.
As personalidades disponíveis atualmente são:
Personalidade padrão que sempre foi das MateBot / Vegga / Gê
Personalidade atualmente tentando aprender usar pronome neutro
Personalidade "humor boomer" saudável (Tiozão do Pavê)
Personalidade "humor boomer" ofensiva (inapropriada para publicação)
Versão usando aiogram e asyncio.
Youtube Download
Todos plugins antigos do telepot migrados para async
Updates recebidas são enviadas para grupo de log, update é formatada com pretty print, markdown. Incluído #tags pra facilitar a busca e depuração além de link para update no caso de grupos e canais.
Última versão estável com Flask e python-telegram-bot
Nota: Nenhum plugin do Telepot foi migrado!
Bot deve estar funcionando com Flask e python-telegram-bot. Nenhum comando tratado, a única função implementada é enviar updates para um grupo.
Última versão estável com telepot
bot matehackers flask quart python-telegram-bot python python3 telegram telegram-bot telegram-bot-api telegram-bots telepot aiogram