mirror of
https://github.com/teloxide/teloxide.git
synced 2024-12-22 22:46:39 +01:00
parent
2bdea18ec3
commit
d3d7cc2fa9
6 changed files with 25 additions and 26 deletions
|
@ -63,8 +63,8 @@ async fn main() {
|
||||||
teloxide::commands_repl(bot, action, Command::ty()).await;
|
teloxide::commands_repl(bot, action, Command::ty()).await;
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn action(bot: Bot, msg: Message, command: Command) -> ResponseResult<()> {
|
async fn action(bot: Bot, msg: Message, cmd: Command) -> ResponseResult<()> {
|
||||||
match command {
|
match cmd {
|
||||||
Command::Help => {
|
Command::Help => {
|
||||||
bot.send_message(msg.chat.id, Command::descriptions().to_string()).await?;
|
bot.send_message(msg.chat.id, Command::descriptions().to_string()).await?;
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,21 +58,25 @@ fn make_keyboard() -> InlineKeyboardMarkup {
|
||||||
/// Parse the text wrote on Telegram and check if that text is a valid command
|
/// Parse the text wrote on Telegram and check if that text is a valid command
|
||||||
/// or not, then match the command. If the command is `/start` it writes a
|
/// or not, then match the command. If the command is `/start` it writes a
|
||||||
/// markup with the `InlineKeyboardMarkup`.
|
/// markup with the `InlineKeyboardMarkup`.
|
||||||
async fn message_handler(m: Message, bot: Bot, me: Me) -> Result<(), Box<dyn Error + Send + Sync>> {
|
async fn message_handler(
|
||||||
if let Some(text) = m.text() {
|
msg: Message,
|
||||||
|
bot: Bot,
|
||||||
|
me: Me,
|
||||||
|
) -> Result<(), Box<dyn Error + Send + Sync>> {
|
||||||
|
if let Some(text) = msg.text() {
|
||||||
match BotCommands::parse(text, me.username()) {
|
match BotCommands::parse(text, me.username()) {
|
||||||
Ok(Command::Help) => {
|
Ok(Command::Help) => {
|
||||||
// Just send the description of all commands.
|
// Just send the description of all commands.
|
||||||
bot.send_message(m.chat.id, Command::descriptions().to_string()).await?;
|
bot.send_message(msg.chat.id, Command::descriptions().to_string()).await?;
|
||||||
}
|
}
|
||||||
Ok(Command::Start) => {
|
Ok(Command::Start) => {
|
||||||
// Create a list of buttons and send them.
|
// Create a list of buttons and send them.
|
||||||
let keyboard = make_keyboard();
|
let keyboard = make_keyboard();
|
||||||
bot.send_message(m.chat.id, "Debian versions:").reply_markup(keyboard).await?;
|
bot.send_message(msg.chat.id, "Debian versions:").reply_markup(keyboard).await?;
|
||||||
}
|
}
|
||||||
|
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
bot.send_message(m.chat.id, "Command not found!").await?;
|
bot.send_message(msg.chat.id, "Command not found!").await?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,19 +21,14 @@ enum Command {
|
||||||
UsernameAndAge { username: String, age: u8 },
|
UsernameAndAge { username: String, age: u8 },
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn answer(bot: Bot, message: Message, command: Command) -> ResponseResult<()> {
|
async fn answer(bot: Bot, msg: Message, cmd: Command) -> ResponseResult<()> {
|
||||||
match command {
|
match cmd {
|
||||||
Command::Help => {
|
Command::Help => bot.send_message(msg.chat.id, Command::descriptions().to_string()).await?,
|
||||||
bot.send_message(message.chat.id, Command::descriptions().to_string()).await?
|
|
||||||
}
|
|
||||||
Command::Username(username) => {
|
Command::Username(username) => {
|
||||||
bot.send_message(message.chat.id, format!("Your username is @{username}.")).await?
|
bot.send_message(msg.chat.id, format!("Your username is @{username}.")).await?
|
||||||
}
|
}
|
||||||
Command::UsernameAndAge { username, age } => {
|
Command::UsernameAndAge { username, age } => {
|
||||||
bot.send_message(
|
bot.send_message(msg.chat.id, format!("Your username is @{username} and age is {age}."))
|
||||||
message.chat.id,
|
|
||||||
format!("Your username is @{username} and age is {age}."),
|
|
||||||
)
|
|
||||||
.await?
|
.await?
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -104,8 +104,8 @@ async fn receive_location(
|
||||||
) -> HandlerResult {
|
) -> HandlerResult {
|
||||||
match msg.text() {
|
match msg.text() {
|
||||||
Some(location) => {
|
Some(location) => {
|
||||||
let message = format!("Full name: {full_name}\nAge: {age}\nLocation: {location}");
|
let report = format!("Full name: {full_name}\nAge: {age}\nLocation: {location}");
|
||||||
bot.send_message(msg.chat.id, message).await?;
|
bot.send_message(msg.chat.id, report).await?;
|
||||||
dialogue.exit().await?;
|
dialogue.exit().await?;
|
||||||
}
|
}
|
||||||
None => {
|
None => {
|
||||||
|
|
|
@ -14,7 +14,7 @@ async fn main() {
|
||||||
let bot = Bot::from_env();
|
let bot = Bot::from_env();
|
||||||
|
|
||||||
let handler = Update::filter_inline_query().branch(dptree::endpoint(
|
let handler = Update::filter_inline_query().branch(dptree::endpoint(
|
||||||
|query: InlineQuery, bot: Bot| async move {
|
|q: InlineQuery, bot: Bot| async move {
|
||||||
// First, create your actual response
|
// First, create your actual response
|
||||||
let google_search = InlineQueryResultArticle::new(
|
let google_search = InlineQueryResultArticle::new(
|
||||||
// Each item needs a unique ID, as well as the response container for the
|
// Each item needs a unique ID, as well as the response container for the
|
||||||
|
@ -26,7 +26,7 @@ async fn main() {
|
||||||
// What message will be sent when clicked/tapped
|
// What message will be sent when clicked/tapped
|
||||||
InputMessageContent::Text(InputMessageContentText::new(format!(
|
InputMessageContent::Text(InputMessageContentText::new(format!(
|
||||||
"https://www.google.com/search?q={}",
|
"https://www.google.com/search?q={}",
|
||||||
query.query,
|
q.query,
|
||||||
))),
|
))),
|
||||||
);
|
);
|
||||||
// While constructing them from the struct itself is possible, it is preferred
|
// While constructing them from the struct itself is possible, it is preferred
|
||||||
|
@ -38,7 +38,7 @@ async fn main() {
|
||||||
"DuckDuckGo Search".to_string(),
|
"DuckDuckGo Search".to_string(),
|
||||||
InputMessageContent::Text(InputMessageContentText::new(format!(
|
InputMessageContent::Text(InputMessageContentText::new(format!(
|
||||||
"https://duckduckgo.com/?q={}",
|
"https://duckduckgo.com/?q={}",
|
||||||
query.query
|
q.query
|
||||||
))),
|
))),
|
||||||
)
|
)
|
||||||
.description("DuckDuckGo Search")
|
.description("DuckDuckGo Search")
|
||||||
|
@ -52,7 +52,7 @@ async fn main() {
|
||||||
|
|
||||||
// Send it off! One thing to note -- the ID we use here must be of the query
|
// Send it off! One thing to note -- the ID we use here must be of the query
|
||||||
// we're responding to.
|
// we're responding to.
|
||||||
let response = bot.answer_inline_query(&query.id, results).send().await;
|
let response = bot.answer_inline_query(&q.id, results).send().await;
|
||||||
if let Err(err) = response {
|
if let Err(err) = response {
|
||||||
log::error!("Error in handler: {:?}", err);
|
log::error!("Error in handler: {:?}", err);
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,8 +9,8 @@ async fn main() {
|
||||||
|
|
||||||
let bot = Bot::from_env();
|
let bot = Bot::from_env();
|
||||||
|
|
||||||
teloxide::repl(bot, |message: Message, bot: Bot| async move {
|
teloxide::repl(bot, |msg: Message, bot: Bot| async move {
|
||||||
bot.send_dice(message.chat.id).await?;
|
bot.send_dice(msg.chat.id).await?;
|
||||||
Ok(())
|
Ok(())
|
||||||
})
|
})
|
||||||
.await;
|
.await;
|
||||||
|
|
Loading…
Reference in a new issue