Esta biblioteca permite que você escreva um bot de telegrama na linguagem de ferrugem. É um invólucro quase completo para a API do Telegram Bot e usa o Hyper para enviar solicitações ao servidor Telegram. Cada chamada de função do telegrama retorna um futuro que carrega o bot real e a resposta.
Adicione isso à sua Cargo.toml
[ dependencies ]
telebot = " 0.3.1 " Este exemplo mostra o uso básico da biblioteca Telebot. Ele cria um novo manipulador para um comando simples "/resposta" e responde o texto recebido. O Tokio Eventloop pesquisa a cada 200 ms para novas atualizações e as combina com os eventos registrados. Se o comando corresponder com "/Responder", ele chamará a função e executará o futuro retornado.
use telebot :: Bot ;
use futures :: stream :: Stream ;
use std :: env ;
// import all available functions
use telebot :: functions :: * ;
fn main ( ) {
// Create the bot
let mut bot = Bot :: new ( & env :: var ( "TELEGRAM_BOT_KEY" ) . unwrap ( ) ) . update_interval ( 200 ) ;
// Register a reply command which answers a message
let handle = bot . new_cmd ( "/reply" )
. and_then ( | ( bot , msg ) | {
let mut text = msg . text . unwrap ( ) . clone ( ) ;
if text . is_empty ( ) {
text = "<empty>" . into ( ) ;
}
bot . message ( msg . chat . id , text ) . send ( )
} )
. for_each ( |_| Ok ( ( ) ) ) ;
bot . run_with ( handle ) ;
} O exemplo anterior foi muito simples, com apenas um manipulador e sem manuseio de erros. Se você quiser ver um mais explicado e ilustrado, veja aqui.
Esta caixa usa derivar personalizada para gerar funções da API do Telegram. Portanto, cada função completa é descrita com uma estrutura nas funções. Para encontrar uma função, a assinatura da estrutura pode ser usada. Por exemplo, considere sendLocation:
/// Use this method to send point on the map. On success, the sent Message is returned.
# [ derive ( TelegramFunction , Serialize ) ]
# [ call = "sendLocation" ]
# [ answer = "Message" ]
# [ function = "location" ]
pub struct SendLocation {
chat_id : u32 ,
latitude : f32 ,
longitude : f32 ,
# [ serde ( skip_serializing_if= "Option::is_none" ) ]
disable_notification : Option < bool > ,
# [ serde ( skip_serializing_if= "Option::is_none" ) ]
reply_to_message_id : Option < u32 > ,
# [ serde ( skip_serializing_if= "Option::is_none" ) ]
reply_markup : Option < NotImplemented >
} O campo "função" define o nome da função na API local. Cada campo opcional na estrutura pode ser alterado chamando uma função adicional com o nome do campo. Por exemplo, para enviar a localização de Paris para conversar 432432 sem notificação: bot.location(432432, 48.8566, 2.3522).disable_notification(true).send()
Licenciado sob qualquer um de
por sua opção.
A menos que você declare explicitamente o contrário, qualquer contribuição enviada intencionalmente para inclusão no trabalho por você, conforme definido na licença Apache-2.0, será licenciado como acima, sem termos ou condições adicionais.