Compare commits
2 Commits
9f1fcf3a6c
...
2aa027159e
| Author | SHA1 | Date | |
|---|---|---|---|
| 2aa027159e | |||
| 695922e3b6 |
2185
Cargo.lock
generated
2185
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
10
Cargo.toml
10
Cargo.toml
@ -3,7 +3,7 @@ name = "shibe-bot"
|
|||||||
description = "A Discord bot written in Rust, using Poise."
|
description = "A Discord bot written in Rust, using Poise."
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
version = "1.1.0"
|
version = "1.2.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
build = "build.rs"
|
build = "build.rs"
|
||||||
|
|
||||||
@ -23,12 +23,12 @@ serde = { version = "1.0.219", features = ["serde_derive"] }
|
|||||||
serde_json = "1.0.140"
|
serde_json = "1.0.140"
|
||||||
roux = "2.2.13"
|
roux = "2.2.13"
|
||||||
structstruck = "0.5.0"
|
structstruck = "0.5.0"
|
||||||
reqwest = { version = "0.12.15", features = ["json"] }
|
reqwest = { version = "0.13.1", features = ["json"] }
|
||||||
octocrab = { version = "0.44.1", optional = true }
|
octocrab = { version = "0.49.5", optional = true }
|
||||||
tempfile = { version = "3.20.0", optional = true }
|
tempfile = { version = "3.20.0", optional = true }
|
||||||
self-replace = { version = "1.5.0", optional = true }
|
self-replace = { version = "1.5.0", optional = true }
|
||||||
zip = { version = "4.2.0", optional = true }
|
zip = { version = "7.2.0", optional = true }
|
||||||
nix = { version = "0.30.1", features = ["process"], optional = true }
|
nix = { version = "0.31.1", features = ["process"], optional = true }
|
||||||
minreq = { version = "2.14.0", features = ["https"], optional = true }
|
minreq = { version = "2.14.0", features = ["https"], optional = true }
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
# Shibe Bot 1.1.0
|
# Shibe Bot 1.2.0
|
||||||
|
|
||||||
[](https://github.com/shibedrill/shibe-bot/actions/workflows/rust.yml)
|
[](https://github.com/shibedrill/shibe-bot/actions/workflows/rust.yml)
|
||||||
[](LICENSE.txt)
|
[](LICENSE.txt)
|
||||||
|
|||||||
@ -1,5 +1,8 @@
|
|||||||
#[cfg(feature = "self-update")]
|
#[cfg(feature = "self-update")]
|
||||||
use {std::convert::Infallible, std::os::unix::process::CommandExt, octocrab, std::io::Write, self_replace, zip, minreq};
|
use {
|
||||||
|
minreq, octocrab, self_replace, std::convert::Infallible, std::io::Write,
|
||||||
|
std::os::unix::process::CommandExt, zip,
|
||||||
|
};
|
||||||
|
|
||||||
use crate::Context;
|
use crate::Context;
|
||||||
use crate::Error;
|
use crate::Error;
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
|
use std::time::Duration;
|
||||||
|
|
||||||
use crate::Context;
|
use crate::Context;
|
||||||
use crate::Error;
|
use crate::Error;
|
||||||
|
|
||||||
use poise::serenity_prelude as serenity;
|
use poise::serenity_prelude as serenity;
|
||||||
use rand::seq::IndexedRandom;
|
use rand::seq::IndexedRandom;
|
||||||
use rand::Rng;
|
use rand::Rng;
|
||||||
@ -91,7 +92,7 @@ pub async fn curbstomp(
|
|||||||
&format!("{} made {} eat pavement.", ctx.author(), target)
|
&format!("{} made {} eat pavement.", ctx.author(), target)
|
||||||
};
|
};
|
||||||
ctx.say(response).await?;
|
ctx.say(response).await?;
|
||||||
info!("Executed command `whack` successfully");
|
info!("Executed command `curbstomp` successfully");
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -180,3 +181,26 @@ pub async fn deer(ctx: Context<'_>) -> Result<(), Error> {
|
|||||||
info!("Executed command `deer` successfully");
|
info!("Executed command `deer` successfully");
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Deer game: look at the deer
|
||||||
|
#[poise::command(slash_command, global_cooldown = 20)]
|
||||||
|
pub async fn game(ctx: Context<'_>) -> Result<(), Error> {
|
||||||
|
ctx.say("Deer game! React to the :deer: first to win.")
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
std::thread::sleep(Duration::from_secs(3));
|
||||||
|
|
||||||
|
let reply = ctx.say(":deer:").await?;
|
||||||
|
let deer_msg = reply.message().await?;
|
||||||
|
let collector = deer_msg.await_reactions(ctx);
|
||||||
|
let collector = collector.timeout(Duration::from_secs(5));
|
||||||
|
|
||||||
|
if let Some(react) = collector.await {
|
||||||
|
let reacting_user = react.user(ctx.http()).await?;
|
||||||
|
ctx.say(format!("{} was first to react! yay!", reacting_user)).await?;
|
||||||
|
} else {
|
||||||
|
ctx.say("Nobody reacted. Game over </3").await?;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|||||||
@ -95,6 +95,7 @@ async fn main() {
|
|||||||
bite(),
|
bite(),
|
||||||
deer(),
|
deer(),
|
||||||
curbstomp(),
|
curbstomp(),
|
||||||
|
game(),
|
||||||
],
|
],
|
||||||
initialize_owners: true,
|
initialize_owners: true,
|
||||||
event_handler: |ctx, event, framework, data| {
|
event_handler: |ctx, event, framework, data| {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user