Skip to content

Commit

Permalink
Ignore messages from the bot user in the admin room
Browse files Browse the repository at this point in the history
  • Loading branch information
exul committed Mar 26, 2017
1 parent fcfe4ee commit ea3524b
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 8 deletions.
2 changes: 0 additions & 2 deletions src/matrix-rocketchat/handlers/events/command_handler.rs
Expand Up @@ -74,8 +74,6 @@ impl<'a> CommandHandler<'a> {

let rocketchat_server = self.get_rocketchat_server(room, &message)?;
self.unbridge(event, &rocketchat_server, &message)?;
} else if event.user_id == self.config.matrix_bot_user_id()? {
debug!(self.logger, "Skipping event from bot user");
} else {
let msg = format!("Skipping event, don't know how to handle command `{}`", message);
debug!(self.logger, msg);
Expand Down
5 changes: 0 additions & 5 deletions src/matrix-rocketchat/handlers/events/forwarder.rs
Expand Up @@ -26,11 +26,6 @@ impl<'a> Forwarder<'a> {

/// Forwards messages to Rocket.Chat
pub fn process(&self, event: &MessageEvent, room: &Room) -> Result<()> {
if event.user_id == self.config.matrix_bot_user_id()? {
debug!(self.logger, "Skipping event, because it was sent by the bot user");
return Ok(());
}

match room.rocketchat_server(self.connection)? {
Some(rocketchat_server) => {
let user_on_rocketchat_server =
Expand Down
5 changes: 5 additions & 0 deletions src/matrix-rocketchat/handlers/events/message_handler.rs
Expand Up @@ -33,6 +33,11 @@ impl<'a> MessageHandler<'a> {

/// Handles messages that are sent in a room
pub fn process(&self, event: &MessageEvent) -> Result<()> {
if event.user_id == self.config.matrix_bot_user_id()? {
debug!(self.logger, "Skipping event, because it was sent by the bot user");
return Ok(());
}

match Room::find_by_matrix_room_id(self.connection, &event.room_id)? {
Some(ref room) if room.is_admin_room => {
CommandHandler::new(self.config, self.connection, &self.logger, &self.matrix_api).process(event, room)?;
Expand Down
20 changes: 20 additions & 0 deletions tests/admin_room.rs
Expand Up @@ -435,3 +435,23 @@ fn unkown_membership_states_are_skipped() {
// so the receiver never gets a message and times out
receiver.recv_timeout(default_timeout()).is_err();
}

#[test]
fn ignore_messages_from_the_bot_user() {
let (message_forwarder, receiver) = MessageForwarder::new();
let mut matrix_router = Router::new();
matrix_router.put(SendMessageEventEndpoint::router_path(), message_forwarder, "send_message_event");

let test = Test::new().with_admin_room().with_matrix_routes(matrix_router).run();

helpers::send_room_message_from_matrix(&test.config.as_url,
RoomId::try_from("!admin:localhost").unwrap(),
UserId::try_from("@rocketchat:localhost").unwrap(),
"help".to_string());

// discard welcome message
receiver.recv_timeout(default_timeout()).unwrap();

// no command is executed, so we get a timeout
assert!(receiver.recv_timeout(default_timeout()).is_err());
}
2 changes: 1 addition & 1 deletion tests/forward_matrix_to_rocketchat.rs
Expand Up @@ -61,7 +61,7 @@ fn do_not_forward_messages_from_the_bot_user_to_avoid_loops() {
UserId::try_from("@rocketchat:localhost").unwrap(),
"spec message".to_string());

receiver.recv_timeout(default_timeout()).is_err();
assert!(receiver.recv_timeout(default_timeout()).is_err());
}

#[test]
Expand Down

0 comments on commit ea3524b

Please sign in to comment.