Compare commits

...
10 Commits
Author SHA1 Message Date
nelsbrock b9522c761d upgrade dependencies
Rust / build (push) Has been cancelled
2024-05-26 13:22:22 +02:00
nelsbrock 57b41d8e63 update dependencies 2024-05-26 11:34:18 +02:00
nelsbrock 8a0527972f update dependencies 2023-10-04 16:02:14 +02:00
nelsbrock 1c0b36ae60 update dependencies 2023-09-15 20:05:07 +02:00
nelsbrock 194ebcb071 update dependencies 2023-08-26 20:53:20 +02:00
nelsbrock f9089bc9b7 update dependencies 2023-04-13 20:23:37 +02:00
nelsbrock cda2defde5 update Cargo.lock 2023-02-14 14:57:58 +01:00
nelsbrock f8094d2872 update env_logger 2023-01-07 13:48:50 +01:00
nelsbrock d3f2aeb220 replace chrono with time 2023-01-07 13:48:50 +01:00
nelsbrock 1333b1f02f update Cargo.lock 2023-01-07 13:28:21 +01:00
4 changed files with 799 additions and 489 deletions
Generated
+763 -459
View File
File diff suppressed because it is too large Load Diff
+7 -7
View File
@@ -7,13 +7,13 @@ edition = "2021"
[dependencies]
log = "0.4"
env_logger = "0.9"
chrono = "0.4"
itertools = "0.10"
tokio = {version = "1.20", features = ["rt-multi-thread", "signal"]}
dashmap = "5.3.4"
env_logger = "0.11.3"
time = "0.3.36"
itertools = "0.13"
tokio = {version = "1.37", features = ["rt-multi-thread", "signal"]}
dashmap = "5.5.3"
[dependencies.serenity]
version = "0.11"
version = "0.12"
default-features = false
features = ["builder", "cache", "client", "gateway", "http", "model", "utils", "rustls_backend"]
features = ["builder", "cache", "client", "gateway", "http", "model", "utils", "rustls_backend"]
+1 -1
View File
@@ -40,7 +40,7 @@ async fn main() -> ExitCode {
.expect("error on waiting for shutdown signal");
debug!("Shutting down...");
shard_manager.lock().await.shutdown_all().await;
shard_manager.shutdown_all().await;
});
match client.start().await {
+28 -22
View File
@@ -1,17 +1,19 @@
use dashmap::DashMap;
use itertools::Itertools;
use log::{debug, error, info};
use serenity::all::{ActivityData, CreateEmbed, CreateMessage};
use serenity::client::{Context, EventHandler};
use serenity::model::channel::Message;
use serenity::model::colour::Colour;
use serenity::model::event::ResumedEvent;
use serenity::model::gateway::{Activity, Ready};
use serenity::model::gateway::Ready;
use serenity::model::id::{ChannelId, UserId};
use serenity::utils::Colour;
use std::cmp::Reverse;
use std::collections::HashMap;
use std::fmt::Display;
use std::ops::RangeInclusive;
use std::time::Duration;
use time::OffsetDateTime;
use tokio::sync::mpsc;
const DEFAULT_CONTEST_DURATION: Duration = Duration::from_secs(60);
@@ -42,7 +44,7 @@ impl EventHandler for Handler {
"Counting message {} (from {} in channel {})",
msg.id,
msg.author.tag(),
msg.channel_id.0
msg.channel_id.get()
);
contest.value().send(msg).await.unwrap();
return;
@@ -61,7 +63,7 @@ impl EventHandler for Handler {
"User {} started a {} second contest in channel {}",
msg.author.tag(),
duration.as_secs(),
msg.channel_id.0
msg.channel_id.get()
);
match run_contest(
@@ -75,12 +77,13 @@ impl EventHandler for Handler {
{
Ok(contest) => debug!(
"Contest in channel {} has ended with {} participant(s)",
msg.channel_id.0,
msg.channel_id.get(),
contest.counts.len()
),
Err(err) => error!(
"Error while running contest in channel {}: {}",
msg.channel_id.0, err
msg.channel_id.get(),
err
),
};
}
@@ -88,7 +91,7 @@ impl EventHandler for Handler {
async fn ready(&self, ctx: Context, ready: Ready) {
info!("Connected as {}", ready.user.tag());
ctx.set_activity(Activity::listening("Spam")).await;
ctx.set_activity(Some(ActivityData::listening("Spam")));
}
async fn resume(&self, _ctx: Context, _: ResumedEvent) {
@@ -143,7 +146,7 @@ impl Contest {
let mut result = String::new();
let mut cur_rank_num = 1;
for (_, rank_group) in &ranking.into_iter().group_by(|elt| fk((*elt).1)) {
for (_, rank_group) in &ranking.into_iter().chunk_by(|elt| fk((elt).1)) {
let mut group_size = 0;
for (userid, count) in rank_group {
result.push_str(
@@ -164,20 +167,21 @@ async fn run_contest(
contests: &Contests,
pin: bool,
) -> serenity::Result<Contest> {
let end_timestamp =
(chrono::Utc::now() + chrono::Duration::from_std(duration).unwrap()).timestamp() + 1;
let end_timestamp = (OffsetDateTime::now_utc() + duration).unix_timestamp();
// send announcement message
let announcement = channel_id
.send_message(&ctx.http, |m| {
m.embed(|e| {
e.title("Es wurde ein Spam-Wettbewerb gestartet!")
.send_message(
&ctx.http,
CreateMessage::new().add_embed(
CreateEmbed::new()
.title("Es wurde ein Spam-Wettbewerb gestartet!")
.description(format!(
"Wer am meisten spamt, gewinnt.\nEnde <t:{end_timestamp}:R>.",
))
.colour(Colour::BLUE)
})
})
.colour(Colour::BLUE),
),
)
.await?;
if pin {
@@ -211,9 +215,11 @@ async fn run_contest(
// send ranking message
channel_id
.send_message(&ctx.http, |m| {
m.embed(|e| {
e.title("Der Wettbewerb ist beendet!")
.send_message(
&ctx.http,
CreateMessage::new().add_embed(
CreateEmbed::new()
.title("Der Wettbewerb ist beendet!")
.colour(Colour::DARK_GREEN)
.field(
"Ergebnisse (nach Nachrichten):",
@@ -224,9 +230,9 @@ async fn run_contest(
"Ergebnisse (nach Zeichen):",
counts.ranking_by(|c| Reverse(c.characters), |c| c.characters),
false,
)
})
})
),
),
)
.await?;
}