Perpustakaan ini memungkinkan Anda untuk menulis bot telegram dalam bahasa karat. Ini adalah pembungkus yang hampir lengkap untuk API Bot Telegram dan menggunakan Hyper untuk mengirim permintaan ke server Telegram. Setiap panggilan fungsi telegram mengembalikan masa depan yang membawa bot yang sebenarnya dan jawabannya.
Tambahkan ini ke Cargo.toml Anda.toml
[ dependencies ]
telebot = " 0.3.1 " Contoh ini menunjukkan penggunaan dasar perpustakaan Telebot. Ini membuat pawang baru untuk perintah "/balasan" sederhana dan membalas teks yang diterima. Tokio Eventloop Polls setiap 200 ms untuk pembaruan baru dan mencocokkannya dengan acara terdaftar. Jika perintah cocok dengan "/balasan" itu akan memanggil fungsi dan menjalankan masa depan yang dikembalikan.
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 ) ;
} Contoh sebelumnya sangat sederhana dengan hanya satu penangan dan tidak ada penanganan kesalahan. Jika Anda ingin melihat yang dijelaskan lebih lanjut dan diilustrasikan, silakan lihat di sini.
Peti ini menggunakan Custom Deme untuk menghasilkan fungsi API Telegram. Oleh karena itu setiap fungsi lengkap dijelaskan dengan struct dalam fungsi. Untuk menemukan fungsi, tanda tangan struct dapat digunakan. Misalnya pertimbangkan 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 >
} Bidang "fungsi" mendefinisikan nama fungsi di API lokal. Setiap bidang opsional dalam struct dapat diubah dengan memanggil fungsi tambahan dengan nama bidang. Jadi misalnya untuk mengirim lokasi Paris ke obrolan 432432 tanpa pemberitahuan: bot.location(432432, 48.8566, 2.3522).disable_notification(true).send()
Berlisensi di bawah salah satu dari
di pilihan Anda.
Kecuali jika Anda secara eksplisit menyatakan sebaliknya, kontribusi apa pun secara sengaja diserahkan untuk dimasukkan dalam pekerjaan oleh Anda, sebagaimana didefinisikan dalam lisensi APACHE-2.0, harus dilisensikan ganda seperti di atas, tanpa syarat atau ketentuan tambahan.