Framework para criar bots do Telegram
Project description
Dicgram
Dicgram é um Framework simples para criação de bots para o Telegram em Python
Instalação
pip install dicgram ou python setup.py install
O uso dele é bem simples, basta criar um arquivo principal e importar o Dicgram, e criar uma instância do Bot.
Classe Bot
A classe Bot é a classe principal do módulo dicgram.cliente.
Ela é responsável por fazer a conexão com o Telegram e gerenciar os eventos.
Parâmetros:
- token (
str) - O token do bot que você recebeu do BotFather. - polling (
bool, opcional) - Se o bot deve receber atualizações de novas mensagens. Padrão éTrue. - polling_rate (
float|int, opcional) - O tempo de espera, em segundos, para receber uma resposta do Telegram. Padrão é0.5. - webhook_url (
str, opcional) - A URL do webhook. Padrão éNone. - webhook_port (
int, opcional) - A porta do server para o webhook. Padrão é8000.
Comandos
Os comandos são criados em um dicionário, onde a chave é o comando e o valor é uma string que será enviada como resposta ao comando enviado pelo usuário.
Exemplo de uso básico
from dicgram import Bot
bot = Bot('<TOKEN>')
# Responde aos comandos no privado
bot.privado = {
'/start': 'Olá, mundo! Eu sou um bot!',
'/help': 'Em que posso ajudar? :)',
}
# Responde aos comandos em canais e grupos
bot.publico = {
'/start': 'Olá, mundo! (publico)',
'/help': 'Em que posso ajudar, (publico)?',
}
# Usuário privado: /start
# Bot: Olá, mundo! Eu sou um bot!
# Usuário público: /start
# Bot: Olá, mundo! (publico)
# Usuário privado: /help
# Bot: Em que posso ajudar? :)
# Usuário público: /help
# Bot: Em que posso ajudar, (publico)?
Além disso, é possível criar comandos com parâmetros, que serão passados como argumentos para a função manipuladora.
Exemplo de uso intermediário
from dicgram import Bot
bot = Bot('<TOKEN>')
def soma(mim, msg, args):
return sum(map(int, args))
bot.privado = {
'/soma': soma,
}
# Usuário: /soma 1 2 3
# Bot: 6
# Usuário: /soma 1 2 3 4 5 6 7 8 9 10
# Bot: 55
# Usuário: /soma 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
# Bot: 210
Quer tornar seu bot mais dinâmico? Existem dois argumentos de fluxo opcionais para a função manipuladora, mim e msg.
O primeiro é um objeto da classe Bot, que contém informações do seu bot e métodos da API do Telegram para enviar mensagens, arquivos, etc.
O segundo é um objeto da classe Mensagem, que contém informações sobre a mensagem enviada pelo usuário,
como o ID do usuário, o nome do usuário, o ID do chat, o tipo do chat, etc.
Exemplo de uso intermediário ||
from dicgram import Bot
bot = Bot('<TOKEN>')
def consultar_cotacao(mim, msg, args):
if not args:
mim.send_message(chat_id=msg.from_user.id, text='Você precisa informar o nome da moeda.')
return 'Uma mensagem foi enviada para você no privado.'
moeda = args[0].upper()
if moeda not in ('USD', 'EUR', 'BTC'):
bot.send_message(chat_id=msg.from_user.id, text='Moeda inválida.')
return 'Enviei uma mensagem para você no privado.'
cotacao = {
'USD': 3.75,
'EUR': 4.20,
'BTC': 50000.00,
}[moeda]
return f'A cotação do {moeda} é {cotacao}.'
bot.privado['/start'] = 'Olá, mundo! Eu sou um bot!'
bot.publico['/cotacao'] = consultar_cotacao
# Usuário público: /cotacao
# Bot privado: Você precisa informar o nome da moeda.
# Bot público: Uma mensagem foi enviada para você no privado.
# Usuário público: /cotacao usd
# Bot publico: A cotação do USD é 3.75.
# Usuário público: /cotacao xyz
# Bot privado: Moeda inválida.
# Bot público: Enviei uma mensagem para você no privado.
# Usuário privado: /start
# Bot: Olá, mundo! Eu sou um bot!
Tem certos momentos em que você quer que o bot responda a uma mensagem específica, sem que seja necessário um comando. Para isso, você pode usar chaves de eventos para o dicionário de comandos.
No momento, existem três chaves de eventos:
@mensagem@edit@chat
A chave @mensagem é usada para responder a eventos de mensagens novas.
A chave @chat é usada para responder a eventos do
que acontece no chat, como um novo usuário entrando no grupo, um usuário saindo do grupo, etc.
A chave @edit é usada para
responder a eventos de mensagens editadas pelo usuário.
Exemplo de uso avançado
from dicgram import Bot
bot = Bot(token='<TOKEN>')
usuarios = {}
chat = None
def contador_de_mensagens(mim, msg, args):
global chat
chat = msg.chat.id
if msg.from_user.id not in usuarios:
usuarios[msg.from_user.id] = 1
else:
usuarios[msg.from_user.id] += 1
def mostrar_contagem(mim, msg, args):
if msg.from_user.id in usuarios:
nome = msg.from_user.first_name
return f'{nome}, você já mandou {usuarios[msg.from_user.id]} mensagens'
else:
return 'Você ainda não mandou nenhuma mensagem'
def desligar_contador(mim, msg, args):
mim.publico.pop('@mensagem', None)
usuarios.clear()
mim.send_message(chat_id=chat,
text='Pessoas, o contador de mensagens foi desligado pelo admin')
return 'Contador de mensagens desligado!'
bot.publico = {
'@mensagem': contador_de_mensagens,
'/contagem': mostrar_contagem,
}
bot.privado['/desligar'] = desligar_contador
# Usuário1 público: /contagem
# Bot público: Você ainda não mandou nenhuma mensagem
# Usuário1 público: Olá, mundo!
# Usuário1 público: /contagem
# Bot público: Dev, você já mandou 1 mensagens
# Usuário privdao: /desligar
# Bot privado: Contador de mensagens desligado!
# Bot público: Pessoas, o contador de mensagens foi desligado pelo admin
Os métodos da API do Telegram são acessados através da instância da classe Bot.
Por exemplo, o método send_message é acessado através de bot.send_message.
O nome dos métodos é o mesmo da API do Telegram, mas em snake_case.
A documentação da API do Telegram pode ser encontrada aqui.
Exemplo de uso de métodos da API do Telegram
from dicgram import Bot
bot = Bot(token='<TOKEN>', update=False)
bot.set_chat_title(chat_id='<ID DO GRUPO>', title='Novo título do grupo')
bot.send_location(chat_id='<ID DO GRUPO>', latitude=-23.5505, longitude=-46.6333)
# etc...
Projeto feito por Marcelo
Licença
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dicgram-2.1.2.tar.gz.
File metadata
- Download URL: dicgram-2.1.2.tar.gz
- Upload date:
- Size: 11.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
59cd934049603bc1d474e789c763b51fa060c8b7bf47b2d205eab41cfb677db9
|
|
| MD5 |
8048e80164a2f6a97721e46e3e9093d1
|
|
| BLAKE2b-256 |
0f369ffaf23232ee9544d692e6a125814a54ccbd81c1016c6b6291d2c898bf90
|
File details
Details for the file dicgram-2.1.2-py3-none-any.whl.
File metadata
- Download URL: dicgram-2.1.2-py3-none-any.whl
- Upload date:
- Size: 11.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0b3d75732502834638d958af2edb1fa595a203d9991f4516e777158cdb05e513
|
|
| MD5 |
a3a5972f24f3ea87f953ed8f7da1c3a4
|
|
| BLAKE2b-256 |
d53fc9d7f86ad1fcd2327b67385e238ca1d31c272fae82e2134c17c2f589077a
|