- is_bypasschar_avail = 1;
- if (deaf_bypasschars.find(text[0], 0) != std::string::npos)
- is_bypasschar = 1;
+ case MessageTarget::TYPE_CHANNEL:
+ {
+ // If we have no bypasschars_uline in config, and this is a bypasschar (regular)
+ // Then it is obviously going to get through +d, no exemption list required
+ bool is_bypasschar = (deaf_bypasschars.find(details.text[0]) != std::string::npos);
+ if (deaf_bypasschars_uline.empty() && is_bypasschar)
+ return MOD_RES_PASSTHRU;
+
+ // If it matches both bypasschar and bypasschar_uline, it will get through.
+ bool is_bypasschar_uline = (deaf_bypasschars_uline.find(details.text[0]) != std::string::npos);
+ if (is_bypasschar && is_bypasschar_uline)
+ return MOD_RES_PASSTHRU;
+
+ return HandleChannel(user, target.Get<Channel>(), details.exemptions, is_bypasschar, is_bypasschar_uline);
+ }
+
+ case MessageTarget::TYPE_USER:
+ return HandleUser(user, target.Get<User>());
+
+ case MessageTarget::TYPE_SERVER:
+ break;