made ping command
This commit is contained in:
@@ -6,3 +6,5 @@ edition = "2021"
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
poise = "0.6.1"
|
||||
tokio = { version = "1.43.0", features = ["rt-multi-thread"] }
|
||||
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
use crate::{Context, Error};
|
||||
|
||||
#[poise::command(slash_command, prefix_command)]
|
||||
pub async fn ping(
|
||||
ctx: Context<'_>,
|
||||
#[description = "The text to echo back"] text: String,
|
||||
) -> Result<(), Error>
|
||||
{
|
||||
ctx.reply(text).await?;
|
||||
Ok(())
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
use crate::{Data, Error};
|
||||
|
||||
use poise::serenity_prelude as serenity;
|
||||
|
||||
use std::future::Future;
|
||||
use std::pin::Pin;
|
||||
|
||||
pub fn event_handler<'a>(
|
||||
_ctx: &'a serenity::Context,
|
||||
event: &'a serenity::FullEvent,
|
||||
_framework: poise::FrameworkContext<'a, Data, Error>,
|
||||
_data: &'a Data,
|
||||
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>> {
|
||||
Box::pin(async move {
|
||||
if let serenity::FullEvent::Ready { data_about_bot } = event {
|
||||
println!(
|
||||
"Bot started as user \"{}\" with id {}",
|
||||
data_about_bot.user.name,
|
||||
data_about_bot.user.id
|
||||
);
|
||||
}
|
||||
Ok(())
|
||||
})
|
||||
}
|
||||
+42
-2
@@ -1,3 +1,43 @@
|
||||
fn main() {
|
||||
println!("Hello, world!");
|
||||
mod cmds;
|
||||
mod events;
|
||||
|
||||
use poise::serenity_prelude as serenity;
|
||||
|
||||
struct Data {}
|
||||
type Error = Box<dyn std::error::Error + Send + Sync>;
|
||||
type Context<'a> = poise::Context<'a, Data, Error>;
|
||||
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
let token = std::env::var("ASSISTANT_TOKEN").expect("missing ASSISTANT_TOKEN env var");
|
||||
let intents = serenity::GatewayIntents::all();
|
||||
|
||||
let peek_len = 27;
|
||||
let token_peek = &token[..peek_len];
|
||||
let token_end_len = token[peek_len..].len();
|
||||
println!("Token: {}{}", token_peek, "*".repeat(token_end_len));
|
||||
|
||||
|
||||
let framework = poise::Framework::builder()
|
||||
.options(poise::FrameworkOptions {
|
||||
commands: vec![cmds::ping()],
|
||||
event_handler: events::event_handler, // error here
|
||||
..Default::default()
|
||||
})
|
||||
.setup(|ctx, _ready, framework| {
|
||||
Box::pin(async move {
|
||||
poise::builtins::register_globally(ctx, &framework.options().commands).await?;
|
||||
Ok(Data {})
|
||||
})
|
||||
})
|
||||
.build();
|
||||
|
||||
let mut bot = serenity::ClientBuilder::new(token, intents)
|
||||
.framework(framework)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
println!("Starting bot...");
|
||||
bot.start().await.unwrap();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user