 
     /// MESSAGE_REACTION_ADD, MESSAGE_REACTION_REMOVE
     case .reactionAdd, .reactionRemove:
-      let channelID = ChannelID(data["channel_id"] as! String)!
+      let channelId = ChannelID(data["channel_id"] as! String)!
+      guard let channel = self.sword.getChannel(for: channelId) else {
+        return
+      }
       let userID = UserID(data["user_id"] as! String)!
       let messageID = MessageID(data["message_id"] as! String)!
       let emoji = Emoji(data["emoji"] as! [String: Any])
-      self.sword.emit(
-        event,
-        with: (self.sword.getChannel(for: channelID)!, userID, messageID, emoji)
-      )
+      self.sword.emit(event, with: (channel, userID, messageID, emoji))
 
     /// TYPING_START
     case .typingStart:

        timeIntervalSince1970: Double(data["timestamp"] as! Int)
      )
      #endif
      let userId = UserID(data["user_id"] as! String)!
      let channelId = ChannelID(data["channel_id"] as! String)!
      self.sword.emit(.typingStart, with: (channelId, userId, timestamp))

    /// USER_UPDATE
    case .userUpdate:

        self.sword.groups[group.id] = group
        self.sword.emit(.channelUpdate, with: group)

      default: return
      }

    /// GUILD_BAN_ADD & GUILD_BAN_REMOVE
    case .guildBanAdd, .guildBanRemove:
      let guildId = GuildID(data["guild_id"] as! String)!
      guard let guild = self.sword.guilds[guildId] else {
        return
      }
      let user = User(self.sword, data["user"] as! [String: Any])
      self.sword.emit(event, with: (guild, user))

    /// GUILD_CREATE
    case .guildCreate:
