3 个版本
0.1.2 | 2022年10月13日 |
---|---|
0.1.1 | 2022年10月13日 |
0.1.0 | 2022年10月13日 |
#1865 in 网页编程
36 每月下载次数
用于 certsd
405KB
7K SLoC
Rust 对 Telegram Bot API 的绑定
参考 golang 项目 go-telegram-bot-api
所有方法都相当直观,如果有什么不清楚的地方,请打开一个问题或提交一个拉取请求。
本项目范围仅限于提供一个 API 包装器,不包含任何额外功能。还有其他项目可以创建带有插件和命令处理器的应用程序,无需自己设计这些。
示例
首先,将依赖项添加到您的 Cargo.toml
[dependencies]
telegram-bot-api = "0.1.0"
use telegram_bot_api::{bot, methods, types};
#[tokio::main]
async fn main() {
let bot = bot::BotApi::new(String::from("token"), None).await;
if bot.is_err() {
panic!("{:?}", bot);
}
let bot = bot.unwrap();
match bot.get_me().await {
Ok(user) => {
println!("get_me result: {:#?}", user);
}
Err(err) => {
println!("err:{:?}", err);
}
}
let mut entities = Vec::with_capacity(1);
entities.push(types::MessageEntity::new_url(6, 22));
let mut send_message = methods::SendMessage::new(
types::ChatId::IntType(123456),
String::from("hello https://www.google.com"),
);
send_message.entities = Some(entities);
let mut btn = types::InlineKeyboardButton::new(String::from("google"));
btn.url = Some(String::from("https://www.google.com"));
let mut btn2 = types::InlineKeyboardButton::new(String::from("telegram"));
btn2.url = Some(String::from("https://telegram.org"));
let keyboard = vec![vec![btn, btn2]];
send_message.reply_markup = Some(types::ReplyMarkup::InlineKeyboardMarkup(
types::InlineKeyboardMarkup::new(keyboard),
));
match bot.send_message(send_message).await {
Ok(message) => {
println!("send_message result: {:#?}", message);
}
Err(err) => {
println!("err:{:?}", err);
}
}
let mut get_chat_menu_button = methods::GetChatMenuButton::new();
get_chat_menu_button.chat_id = Some(123456);
match bot.get_chat_menu_button(get_chat_menu_button).await {
Ok(result) => match result {
_ => {
println!("get_chat_menu_button result: {:#?}", result);
}
},
Err(err) => {
println!("err:{:?}", err);
}
}
let mut media = Vec::new();
media.push(types::InputMedia::InputMediaPhoto(
types::InputMediaPhoto::new(types::InputFile::FilePath(String::from("logo_256.png"))),
));
media.push(types::InputMedia::InputMediaPhoto(
types::InputMediaPhoto::new(types::InputFile::FileID(
String::from("AgACAgQAAx0EYIAjxwADkGNGxUhE7P-hV_54gWPJs_IKj7v4AAK3ujEbNBcRUoJ4Nhu7bEmQAQADAgADcwADKgQ"),
)),
));
media.push(types::InputMedia::InputMediaPhoto(
types::InputMediaPhoto::new(types::InputFile::FilePath(String::from("iconbig_green.png"))),
));
match bot
.send_media_group(methods::SendMediaGroup::new(
types::ChatId::IntType(123456),
media,
))
.await
{
Ok(result) => {
println!("send_media_group result: {:#?}", result);
}
Err(err) => {
println!("err:{:?}", err);
}
}
}
依赖项
~6–18MB
~276K SLoC