Add deer game

This commit is contained in:
August 2026-01-26 22:54:53 +00:00
parent 9f1fcf3a6c
commit 695922e3b6
No known key found for this signature in database
6 changed files with 44 additions and 11 deletions

2
Cargo.lock generated
View File

@ -2378,7 +2378,7 @@ dependencies = [
[[package]]
name = "shibe-bot"
version = "1.1.0"
version = "1.2.0"
dependencies = [
"anyhow",
"dotenvy",

View File

@ -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"

View File

@ -1,4 +1,4 @@
# Shibe Bot 1.1.0
# Shibe Bot 1.2.0
[![Rust](https://github.com/shibedrill/shibe-bot/actions/workflows/rust.yml/badge.svg)](https://github.com/shibedrill/shibe-bot/actions/workflows/rust.yml)
[![GitHub License](https://img.shields.io/github/license/shibedrill/shibe-bot)](LICENSE.txt)

View File

@ -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};
use {
minreq, octocrab, self_replace, std::convert::Infallible, std::io::Write,
std::os::unix::process::CommandExt, zip,
};
use crate::Context;
use crate::Error;

View File

@ -1,7 +1,13 @@
use std::time::Duration;
use crate::Context;
use crate::Error;
use poise::serenity_prelude::CacheHttp;
use poise::serenity_prelude::ShardMessenger;
use poise::serenity_prelude::client;
use poise::serenity_prelude as serenity;
use poise::serenity_prelude::futures::TryFutureExt;
use rand::seq::IndexedRandom;
use rand::Rng;
@ -91,7 +97,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 +186,26 @@ pub async fn deer(ctx: Context<'_>) -> Result<(), Error> {
info!("Executed command `deer` successfully");
Ok(())
}
/// Deer game! First to react wins.
#[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(())
}

View File

@ -95,6 +95,7 @@ async fn main() {
bite(),
deer(),
curbstomp(),
game(),
],
initialize_owners: true,
event_handler: |ctx, event, framework, data| {