Lyrics status
This commit is contained in:
+116
-106
@@ -334,6 +334,8 @@ where
|
||||
.resource_types(resource_types)
|
||||
.build();
|
||||
|
||||
let (gateway_tx, mut gateway_rx) = tokio::sync::mpsc::unbounded_channel();
|
||||
|
||||
let runtime = Arc::new(Runtime {
|
||||
http,
|
||||
app,
|
||||
@@ -342,6 +344,9 @@ where
|
||||
prefixes: bot.prefixes.clone(),
|
||||
commands: bot.commands.clone(),
|
||||
cache,
|
||||
gateway_tx,
|
||||
shard_number: bot.shard.number(),
|
||||
shard_total: bot.shard.total(),
|
||||
});
|
||||
|
||||
for task in bot.tasks.clone() {
|
||||
@@ -372,120 +377,125 @@ where
|
||||
let mut gateway = Shard::with_config(bot.shard, config);
|
||||
|
||||
loop {
|
||||
if let Some(Ok(event)) = gateway.next_event(EventTypeFlags::all()).await {
|
||||
let task_rt = runtime.clone();
|
||||
let task_bot = bot.clone();
|
||||
tokio::select! {
|
||||
Some(Ok(event)) = gateway.next_event(EventTypeFlags::all()) => {
|
||||
let task_rt = runtime.clone();
|
||||
let task_bot = bot.clone();
|
||||
|
||||
tokio::spawn(async move {
|
||||
task_rt.cache.update(&event);
|
||||
tokio::spawn(async move {
|
||||
task_rt.cache.update(&event);
|
||||
|
||||
match event {
|
||||
Event::Ready(event) => {
|
||||
for handler in &task_bot.on_ready_handlers {
|
||||
handler
|
||||
.on_ready(&event, task_rt.clone())
|
||||
.await
|
||||
.inspect_err(
|
||||
|e| log::error!("An error occurred while handling on ready for {handler:?}! {e:?}")
|
||||
)
|
||||
.bye();
|
||||
match event {
|
||||
Event::Ready(event) => {
|
||||
for handler in &task_bot.on_ready_handlers {
|
||||
handler
|
||||
.on_ready(&event, task_rt.clone())
|
||||
.await
|
||||
.inspect_err(
|
||||
|e| log::error!("An error occurred while handling on ready for {handler:?}! {e:?}")
|
||||
)
|
||||
.bye();
|
||||
}
|
||||
}
|
||||
}
|
||||
Event::GatewayReconnect => {
|
||||
for handler in &task_bot.on_reconnect_handlers {
|
||||
handler
|
||||
.on_reconnect(task_rt.clone())
|
||||
.await
|
||||
.inspect_err(
|
||||
|e| log::error!("An error occurred while handling on reconnect for {handler:?}! {e:?}")
|
||||
)
|
||||
.bye();
|
||||
Event::GatewayReconnect => {
|
||||
for handler in &task_bot.on_reconnect_handlers {
|
||||
handler
|
||||
.on_reconnect(task_rt.clone())
|
||||
.await
|
||||
.inspect_err(
|
||||
|e| log::error!("An error occurred while handling on reconnect for {handler:?}! {e:?}")
|
||||
)
|
||||
.bye();
|
||||
}
|
||||
}
|
||||
}
|
||||
Event::InteractionCreate(interaction) => {
|
||||
for handler in &task_bot.on_interaction_handlers {
|
||||
handler
|
||||
.on_interaction(&interaction, task_rt.clone(), task_bot.extras.clone())
|
||||
.await
|
||||
.inspect_err(
|
||||
|e| log::error!("An error occurred while handling on interaction for {handler:?}! {e:?}")
|
||||
)
|
||||
.bye();
|
||||
Event::InteractionCreate(interaction) => {
|
||||
for handler in &task_bot.on_interaction_handlers {
|
||||
handler
|
||||
.on_interaction(&interaction, task_rt.clone(), task_bot.extras.clone())
|
||||
.await
|
||||
.inspect_err(
|
||||
|e| log::error!("An error occurred while handling on interaction for {handler:?}! {e:?}")
|
||||
)
|
||||
.bye();
|
||||
}
|
||||
}
|
||||
}
|
||||
Event::MessageCreate(message) => {
|
||||
for handler in &task_bot.on_message_handlers {
|
||||
log::trace!("Running {handler:?}");
|
||||
Event::MessageCreate(message) => {
|
||||
for handler in &task_bot.on_message_handlers {
|
||||
log::trace!("Running {handler:?}");
|
||||
|
||||
handler
|
||||
.on_message(&message, task_rt.clone(), task_bot.extras.clone())
|
||||
.await
|
||||
.inspect_err(
|
||||
|e| log::error!("An error occurred while handling on message for {handler:?}! {e:?}")
|
||||
)
|
||||
.bye();
|
||||
handler
|
||||
.on_message(&message, task_rt.clone(), task_bot.extras.clone())
|
||||
.await
|
||||
.inspect_err(
|
||||
|e| log::error!("An error occurred while handling on message for {handler:?}! {e:?}")
|
||||
)
|
||||
.bye();
|
||||
}
|
||||
}
|
||||
Event::MessageUpdate(message) => {
|
||||
for handler in &task_bot.on_message_edit_handlers {
|
||||
handler
|
||||
.on_message_edit(&message, task_rt.clone())
|
||||
.await
|
||||
.inspect_err(
|
||||
|e| log::error!("An error occurred while handling on message edit for {handler:?}! {e:?}")
|
||||
)
|
||||
.bye();
|
||||
}
|
||||
}
|
||||
Event::MessageDelete(message) => {
|
||||
for handler in &task_bot.on_message_delete_handlers {
|
||||
handler
|
||||
.on_message_delete(&message, task_rt.clone())
|
||||
.await
|
||||
.inspect_err(
|
||||
|e| log::error!("An error occurred while handling on message delete for {handler:?}! {e:?}")
|
||||
)
|
||||
.bye();
|
||||
}
|
||||
}
|
||||
Event::GuildCreate(guild) => {
|
||||
for handler in &task_bot.on_server_create_handlers {
|
||||
handler
|
||||
.on_server_create(&guild, task_rt.clone())
|
||||
.await
|
||||
.inspect_err(
|
||||
|e| log::error!("An error occurred while handling on server create for {handler:?}! {e:?}")
|
||||
)
|
||||
.bye();
|
||||
}
|
||||
}
|
||||
Event::GuildUpdate(guild) => {
|
||||
for handler in &task_bot.on_server_update_handlers {
|
||||
handler
|
||||
.on_server_update(&guild, task_rt.clone())
|
||||
.await
|
||||
.inspect_err(
|
||||
|e| log::error!("An error occurred while handling on server update for {handler:?}! {e:?}")
|
||||
)
|
||||
.bye();
|
||||
}
|
||||
}
|
||||
Event::GuildDelete(guild) => {
|
||||
for handler in &task_bot.on_server_delete_handlers {
|
||||
handler
|
||||
.on_server_delete(&guild, task_rt.clone())
|
||||
.await
|
||||
.inspect_err(
|
||||
|e| log::error!("An error occurred while handling on server delete for {handler:?}! {e:?}")
|
||||
)
|
||||
.bye();
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
log::trace!("Unhandled event {:?} received", event.kind());
|
||||
}
|
||||
}
|
||||
Event::MessageUpdate(message) => {
|
||||
for handler in &task_bot.on_message_edit_handlers {
|
||||
handler
|
||||
.on_message_edit(&message, task_rt.clone())
|
||||
.await
|
||||
.inspect_err(
|
||||
|e| log::error!("An error occurred while handling on message edit for {handler:?}! {e:?}")
|
||||
)
|
||||
.bye();
|
||||
}
|
||||
}
|
||||
Event::MessageDelete(message) => {
|
||||
for handler in &task_bot.on_message_delete_handlers {
|
||||
handler
|
||||
.on_message_delete(&message, task_rt.clone())
|
||||
.await
|
||||
.inspect_err(
|
||||
|e| log::error!("An error occurred while handling on message delete for {handler:?}! {e:?}")
|
||||
)
|
||||
.bye();
|
||||
}
|
||||
}
|
||||
Event::GuildCreate(guild) => {
|
||||
for handler in &task_bot.on_server_create_handlers {
|
||||
handler
|
||||
.on_server_create(&guild, task_rt.clone())
|
||||
.await
|
||||
.inspect_err(
|
||||
|e| log::error!("An error occurred while handling on server create for {handler:?}! {e:?}")
|
||||
)
|
||||
.bye();
|
||||
}
|
||||
}
|
||||
Event::GuildUpdate(guild) => {
|
||||
for handler in &task_bot.on_server_update_handlers {
|
||||
handler
|
||||
.on_server_update(&guild, task_rt.clone())
|
||||
.await
|
||||
.inspect_err(
|
||||
|e| log::error!("An error occurred while handling on server update for {handler:?}! {e:?}")
|
||||
)
|
||||
.bye();
|
||||
}
|
||||
}
|
||||
Event::GuildDelete(guild) => {
|
||||
for handler in &task_bot.on_server_delete_handlers {
|
||||
handler
|
||||
.on_server_delete(&guild, task_rt.clone())
|
||||
.await
|
||||
.inspect_err(
|
||||
|e| log::error!("An error occurred while handling on server delete for {handler:?}! {e:?}")
|
||||
)
|
||||
.bye();
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
log::trace!("Unhandled event {:?} received", event.kind());
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
Some(json) = gateway_rx.recv() => {
|
||||
gateway.send(json)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
|
||||
use std::sync::Arc;
|
||||
|
||||
use tokio::sync::mpsc::UnboundedSender;
|
||||
use twilight_cache_inmemory::InMemoryCache;
|
||||
use twilight_http::Client;
|
||||
use twilight_model::oauth::Application;
|
||||
@@ -48,6 +49,12 @@ pub struct Runtime<T, E> {
|
||||
pub state: Arc<T>,
|
||||
|
||||
pub cache: InMemoryCache,
|
||||
|
||||
/// Used to send messages through the gateway.
|
||||
pub gateway_tx: UnboundedSender<String>,
|
||||
|
||||
pub shard_number: u32,
|
||||
pub shard_total: u32,
|
||||
}
|
||||
|
||||
impl<T, E> Runtime<T, E> {
|
||||
|
||||
Reference in New Issue
Block a user