Esta biblioteca le permite escribir un bot de telegrama en el lenguaje de óxido. Es un envoltorio casi completo para la API BOT Telegram y usa Hyper para enviar solicitudes al servidor Telegram. Cada llamada de función de telegrama devuelve un futuro que lleva el bot real y la respuesta.
Agregue esto a su Cargo.toml
[ dependencies ]
telebot = " 0.3.1 " Este ejemplo muestra el uso básico de la biblioteca TeleBot. Crea un nuevo control para un comando simple "/respuesta" y responde el texto recibido. El Tokio EventLoop encuesta cada 200 ms para nuevas actualizaciones y las coincide con los eventos registrados. Si el comando coincide con "/respuesta", llamará a la función y ejecutará el futuro devuelto.
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 ) ;
} El ejemplo anterior fue muy simple con un solo controlador y sin manejo de errores. Si desea ver uno más explicado e ilustrado, consulte aquí.
Esta caja utiliza el derivado personalizado para generar funciones de la API de telegrama. Por lo tanto, cada función completa se describe con una estructura en funciones. Para encontrar una función, se puede usar la firma de estructura. Por ejemplo, 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 >
} La "función" del campo define el nombre de la función en la API local. Cada campo opcional en la estructura se puede cambiar llamando a una función adicional con el nombre del campo. Entonces, por ejemplo, para enviar la ubicación de París al chat 432432 sin notificación: bot.location(432432, 48.8566, 2.3522).disable_notification(true).send()
Con licencia bajo cualquiera de
a tu opción.
A menos que declare explícitamente lo contrario, cualquier contribución presentada intencionalmente para su inclusión en el trabajo por usted, como se define en la licencia Apache-2.0, se debe tener doble licencia como se indicó anteriormente, sin ningún término o condiciones adicionales.