このライブラリを使用すると、錆言語で電報ボットを書くことができます。 Telegram Bot APIのほぼ完全なラッパーであり、Hyperを使用してTelegramサーバーにリクエストを送信します。各電報関数コールは、実際のボットと答えを運ぶ未来を返します。
これをCargo.tomlに追加します。toml
[ dependencies ]
telebot = " 0.3.1 " この例は、テレボットライブラリの基本的な使用法を示しています。単純な「/返信」コマンド用の新しいハンドラーを作成し、受信したテキストに返信します。 Tokio Eventloopは、新しい更新のために200msごとに投票し、登録されたイベントと一致します。コマンドが「/返信」と一致する場合、関数を呼び出し、返された未来を実行します。
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 ) ;
} 前者の例は非常に単純で、ハンドラーが1つだけで、エラー処理はありませんでした。さらに説明し、説明されたものを見たい場合は、こちらをご覧ください。
このクレートは、テレグラムAPIの関数を生成するためにカスタム派生を使用します。したがって、各完全関数は、functions.RSのstructで説明されています。関数を見つけるために、struct署名を使用できます。たとえば、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 >
}フィールド「関数」は、ローカルAPIの関数の名前を定義します。構造体内の各オプションフィールドは、フィールドの名前の追加関数を呼び出すことで変更できます。たとえば、パリの場所を通知なしにチャットするためにパリの場所を送信する: bot.location(432432, 48.8566, 2.3522).disable_notification(true).send()
いずれかの下でライセンスされています
あなたのオプションで。
明示的に特に述べない限り、Apache-2.0ライセンスで定義されているように、お客様による仕事に含めるために意図的に提出された貢献は、追加の条件なしで、上記のように二重ライセンスを取得するものとします。