Cette bibliothèque vous permet d'écrire un bot télégramme dans la langue de la rouille. C'est un wrapper presque complet pour l'API Bot Telegram et utilise Hyper pour envoyer des demandes au serveur Telegram. Chaque appel de fonction télégramme renvoie un avenir qui porte le bot réel et la réponse.
Ajoutez ceci à votre Cargo.toml
[ dependencies ]
telebot = " 0.3.1 " Cet exemple montre l'utilisation de base de la bibliothèque Telebot. Il crée un nouveau gestionnaire pour une simple commande "/ réponse" et répond le texte reçu. Le Tokio Eventloop interroge toutes les 200 ms pour de nouvelles mises à jour et les correspond aux événements enregistrés. Si la commande correspond à "/ réponse", elle appellera la fonction et exécutera l'avenir renvoyé.
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 ) ;
} L'ancien exemple était très simple avec un seul gestionnaire et sans traitement d'erreur. Si vous voulez en voir un plus expliqué et illustré, veuillez consulter ici.
Cette caisse utilise la dérive personnalisée pour générer des fonctions de l'API Telegram. Par conséquent, chaque fonction complète est décrite avec une structure en fonctions.RS et la caisse supplémentaire Telebot-Derive génère la signature complète. Afin de trouver une fonction, la signature de structure peut être utilisée. Par exemple, considérez 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 >
} Le champ "fonction" définit le nom de la fonction dans l'API locale. Chaque champ facultatif de la structure peut être modifié en appelant une fonction supplémentaire avec le nom du champ. Ainsi, par exemple d'envoyer l'emplacement de Paris pour discuter 432432 sans notification: bot.location(432432, 48.8566, 2.3522).disable_notification(true).send()
Sous licence sous l'un ou l'autre des
à votre option.
À moins que vous ne soyez explicitement indiqué autrement, toute contribution intentionnellement soumise pour inclusion dans les travaux par vous, telle que définie dans la licence Apache-2.0, doit être autorisée à double licence comme ci-dessus, sans aucune condition supplémentaire.