Fixed issue with automated messages and spying
+ Discord blocks "System Messages" from usersnames because of course it doesmain
parent
fa7d78c272
commit
6ebf9e0ad2
|
@ -9,6 +9,10 @@ pub struct HostSnooper {}
|
|||
|
||||
#[async_trait]
|
||||
impl Listener for HostSnooper {
|
||||
fn name(&self) -> String {
|
||||
"Host Snooper".to_string()
|
||||
}
|
||||
|
||||
fn get_priority(&self) -> Priority {
|
||||
Priority::Logging
|
||||
}
|
||||
|
|
|
@ -39,6 +39,7 @@ impl Listeners {
|
|||
}
|
||||
|
||||
pub fn add_listener(&mut self, listener: Box<dyn Listener>) {
|
||||
println!("Adding {} listener", listener.name());
|
||||
self.listeners.push(listener);
|
||||
|
||||
self.listeners.sort_by_key(|l1| l1.get_priority());
|
||||
|
@ -89,6 +90,8 @@ pub struct ListenerContext<'a> {
|
|||
|
||||
#[async_trait]
|
||||
pub trait Listener: Debug + Send + Sync {
|
||||
fn name(&self) -> String;
|
||||
|
||||
fn get_priority(&self) -> Priority {
|
||||
Priority::Medium
|
||||
}
|
||||
|
|
|
@ -84,7 +84,7 @@ impl<'a> WoxlfMessage<'a> {
|
|||
Ok(match &self.source {
|
||||
MessageSource::Player(p) => p.codename.clone(),
|
||||
MessageSource::Host => global_data.game_cfg()?.bot_name.clone(),
|
||||
MessageSource::Automated => "Woxlf System Message".to_string(),
|
||||
MessageSource::Automated => "Woxlf Game Message".to_string(),
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -213,7 +213,7 @@ pub async fn send_to_host_channel(
|
|||
.get(&UserId::from(dest_player.discord_id))
|
||||
.unwrap()
|
||||
.display_name();
|
||||
format!(" to {} ({})", dest_player.codename, name)
|
||||
format!("**[DM to {} ({})]** ", dest_player.codename, name)
|
||||
} else {
|
||||
"".to_string()
|
||||
}
|
||||
|
@ -222,18 +222,19 @@ pub async fn send_to_host_channel(
|
|||
};
|
||||
|
||||
let host_channel_username = format!(
|
||||
"{} ({}){}",
|
||||
"{} ({})",
|
||||
msg.get_message_username(global_data)?,
|
||||
source,
|
||||
dest
|
||||
);
|
||||
|
||||
let content = format!("{}{}", dest, msg.content);
|
||||
|
||||
send_webhook_msg(
|
||||
http,
|
||||
WebhookId::from(global_data.cfg.discord_config.host_webhook_id),
|
||||
&host_channel_username,
|
||||
Some(msg.get_profile_pic(global_data)?),
|
||||
&msg.content,
|
||||
&content,
|
||||
&msg.attachments,
|
||||
)
|
||||
.await?;
|
||||
|
|
|
@ -134,7 +134,6 @@ impl Role {
|
|||
}
|
||||
|
||||
pub fn register_role_listener(&self, listeners: &mut Listeners) {
|
||||
#[allow(clippy::single_match)]
|
||||
match self {
|
||||
Role::Spy => listeners.add_listener(Box::new(SpyListener {role: Role::Spy})),
|
||||
Role::WolfAgent => listeners.add_listener(Box::new(SpyListener {role: Role::WolfAgent})),
|
||||
|
|
|
@ -15,6 +15,10 @@ pub struct SpyListener {
|
|||
|
||||
#[async_trait]
|
||||
impl Listener for SpyListener {
|
||||
fn name(&self) -> String {
|
||||
format!("{} DM Listener", self.role)
|
||||
}
|
||||
|
||||
fn get_priority(&self) -> Priority {
|
||||
Priority::Logging
|
||||
}
|
||||
|
@ -56,6 +60,8 @@ impl Listener for SpyListener {
|
|||
|
||||
// 1/4 chance to intercept message
|
||||
if thread_rng().gen_bool(0.25) {
|
||||
println!("Sending a spy message...");
|
||||
|
||||
let msg_content = MessageBuilder::default()
|
||||
.push_bold_line_safe(format!(
|
||||
"{} Sent {} a private message:",
|
||||
|
|
|
@ -35,6 +35,7 @@ async fn main() {
|
|||
|
||||
let mut listeners = Listeners::default();
|
||||
Role::Spy.register_role_listener(&mut listeners);
|
||||
Role::WolfAgent.register_role_listener(&mut listeners);
|
||||
|
||||
let mut client = Client::builder(&bot_cfg.discord_config.token, GatewayIntents::all())
|
||||
.event_handler(Handler {})
|
||||
|
|
Loading…
Reference in New Issue