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."
|
||||
license = "MIT"
|
||||
readme = "README.md"
|
||||
version = "1.1.0"
|
||||
version = "1.2.0"
|
||||
edition = "2021"
|
||||
build = "build.rs"
|
||||
|
||||
@ -23,12 +23,12 @@ serde = { version = "1.0.219", features = ["serde_derive"] }
|
||||
serde_json = "1.0.140"
|
||||
roux = "2.2.13"
|
||||
structstruck = "0.5.0"
|
||||
reqwest = { version = "0.12.15", features = ["json"] }
|
||||
octocrab = { version = "0.44.1", optional = true }
|
||||
reqwest = { version = "0.13.1", features = ["json"] }
|
||||
octocrab = { version = "0.49.5", optional = true }
|
||||
tempfile = { version = "3.20.0", optional = true }
|
||||
self-replace = { version = "1.5.0", optional = true }
|
||||
zip = { version = "4.2.0", optional = true }
|
||||
nix = { version = "0.30.1", features = ["process"], optional = true }
|
||||
zip = { version = "7.2.0", optional = true }
|
||||
nix = { version = "0.31.1", features = ["process"], 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)
|
||||
[](LICENSE.txt)
|
||||
|
||||
@ -1,5 +1,8 @@
|
||||
#[cfg(feature="self-update")]
|
||||
use {std::convert::Infallible, std::os::unix::process::CommandExt, octocrab, std::io::Write, self_replace, zip, minreq};
|
||||
#[cfg(feature = "self-update")]
|
||||
use {
|
||||
minreq, octocrab, self_replace, std::convert::Infallible, std::io::Write,
|
||||
std::os::unix::process::CommandExt, zip,
|
||||
};
|
||||
|
||||
use crate::Context;
|
||||
use crate::Error;
|
||||
@ -34,7 +37,7 @@ pub async fn version(ctx: Context<'_>) -> Result<(), Error> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[cfg(feature="self-update")]
|
||||
#[cfg(feature = "self-update")]
|
||||
/// Update the bot remotely (requires Github CI)
|
||||
#[poise::command(slash_command, owners_only, hide_in_help)]
|
||||
pub async fn update(
|
||||
@ -114,7 +117,7 @@ pub async fn say(
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[cfg(feature="self-update")]
|
||||
#[cfg(feature = "self-update")]
|
||||
fn self_update() -> Result<Infallible, Error> {
|
||||
let artifact_url = "https://nightly.link/shibedrill/shibe-bot/workflows/rust/main/artifact.zip";
|
||||
let tempdir = tempfile::Builder::new().prefix("shibe-bot").tempdir()?;
|
||||
@ -167,11 +170,11 @@ fn self_update() -> Result<Infallible, Error> {
|
||||
mod test {
|
||||
|
||||
#[cfg(test)]
|
||||
#[cfg(feature="self-update")]
|
||||
#[cfg(feature = "self-update")]
|
||||
use {crate::Error, std::convert::Infallible};
|
||||
|
||||
#[test]
|
||||
#[cfg(feature="self-update")]
|
||||
#[cfg(feature = "self-update")]
|
||||
fn test_self_update() -> Result<Infallible, Error> {
|
||||
use crate::command::devel::self_update;
|
||||
use pretty_env_logger;
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
use std::time::Duration;
|
||||
|
||||
use crate::Context;
|
||||
use crate::Error;
|
||||
|
||||
use poise::serenity_prelude as serenity;
|
||||
use rand::seq::IndexedRandom;
|
||||
use rand::Rng;
|
||||
@ -91,7 +92,7 @@ pub async fn curbstomp(
|
||||
&format!("{} made {} eat pavement.", ctx.author(), target)
|
||||
};
|
||||
ctx.say(response).await?;
|
||||
info!("Executed command `whack` successfully");
|
||||
info!("Executed command `curbstomp` successfully");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@ -180,3 +181,26 @@ pub async fn deer(ctx: Context<'_>) -> Result<(), Error> {
|
||||
info!("Executed command `deer` successfully");
|
||||
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(())
|
||||
}
|
||||
|
||||
@ -85,7 +85,7 @@ async fn main() {
|
||||
shutdown(),
|
||||
restart(),
|
||||
say(),
|
||||
#[cfg(feature="self-update")]
|
||||
#[cfg(feature = "self-update")]
|
||||
update(),
|
||||
version(),
|
||||
// Fun
|
||||
@ -95,6 +95,7 @@ async fn main() {
|
||||
bite(),
|
||||
deer(),
|
||||
curbstomp(),
|
||||
game(),
|
||||
],
|
||||
initialize_owners: true,
|
||||
event_handler: |ctx, event, framework, data| {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user