O CHURRASBOT é um bot do Telegram criado para gerenciar a presença dos participantes nos churrascos da temporada. Desenvolvido em Shell Script (Bash), o bot utiliza a API do Telegram para realizar todas as ações. Acabou a conversa fiada, agora saberemos quem são os campeões!
- O projeto depende dos binários
curl
,bc
eat
. Certifique-se de que essas dependências estejam disponíveis noPATH
do sistema. - Caso queira enviar notificações por email, o
mailx
também será necessário, bem como umSMTP
configurado.
- Deve ser criado um arquivo chamado
env.sh
com o seguinte conteúdo:
TOKEN="token_do_seu_bot"
apiurl="https://api.telegram.org/bot$TOKEN"
QUICKCHART="https://quickchart.io" # Altere se estiver rodando seu próprio quickchart
CHATID="CHAT_ID do grupo"
ADMINS=( "userId_admin_1" "userId_admin_n" )
DISTANCIA=150 # Distância válida para check-in (metros)
EMAIL=no # Mude para yes para usar emails
ANTES=1 # Horas antes do evento para início do check-in
DEPOIS=2 # Horas após o evento para fim do check-in
ANTECEDENCIA=18 # Período mínimo de antecedência em horas para um churrasco ser marcado
Um administrador deve cadastrar previamente o local onde o churrasco será realizado, utilizando o comando:
/newplace VENUE lat long endereço do local no google maps
Onde:
VENUE
é o nome do local a ser utilizado no bot futuramente (sem espaços, por favor)lat
elong
são a latitude e longitude base do local
Um administrador pode criar novos churrascos usando o seguinte comando:
/newchurras dd/mm/aaaa HH:MM VENUE
Esse comando define o dia e a hora do churrasco. O check-in será válido no intervalo de tempo definido pelas variáveis ANTES
e DEPOIS
localizadas no arquivo env.sh
, tendo a hora marcada como base. Por padrão, ANTES=1
e DEPOIS=2
. Assim, um churrasco marcado para as 13h00 terá seu checkin válido de 12h00 até 15h00.
Um churrasco não pode ser marcado com uma antecedência menor do que a definida na variável ANTECEDENCIA
, nem pode ser marcado ao mesmo tempo que outro churrasco.
A mensagem confirmando o agendamento será "pinada" no grupo e um arquivo .ics será enviado para que os usuários possam salvar o evento nas agendas.
Para deletar um churrasco, um administrador pode utilizar o comando:
/delchurras dd/mm/aaaa HH:MM VENUE
Usuários que desejarem ser notificados por e-mail sobre novos churrascos devem cadastrar o e-mail com o comando:
/email endereco@email.com
A validação do check-in ocorre exclusivamente através do envio de uma mensagem de localização em tempo real pelo Telegram. A localização comum é desconsiderada, pois o próprio Telegram permite a falsificação dessas informações.
Para contabilizar o check-in, a localização deve ser enviada dentro do intervalo estabelecido (1 hora antes até 2 horas após o horário marcado) e respeitar a distância configurada (atualmente, 150 metros do ponto registrado no arquivo localizacoes
).
Mensagens com localização processadas pelo bot são automaticamente removidas do grupo a fim de evitar poluição visual (eventuais falhas nesse processo são possíveis).
Administradores podem cancelar check-ins fraudulentos, realizados com GPS falso:
/fake nome_do_usuario
Esse comando anula o check-in e subtrai um ponto adicional do usuário no ranking, além do ponto associado ao check-in fraudulento.
Comando | Função |
---|---|
/ranking | Exibe o ranking de presenças |
/qualchurras | Mostra o próximo churrasco agendado, em resposta à mensagem marcada |
Registra o e-mail do usuário para receber notificações de churrascos | |
/help | Exibe instruções para realizar o check-in |
- Implementar horário mínimo para check-in
- Converter cálculo de distância de C para bc
- Estabelecer prazo mínimo para agendar churrascos
- Verificar conflito de horários na marcação de churrascos
- Enviar notificações de churrascos por e-mail
- Enviar lembrete de início do check-in no Telegram
- Enviar lembrete de término do check-in no Telegram
- Mudar a lista de usuários e controle de check-in para IDs ao invés de usernames
Em algumas situações, após o envio de um check-in, o bot pode falhar no processamento do offset e não processar algumas mensagens.✅