+}
+
+void ModuleDelayJoin::OnText(User* user, void* dest, int target_type, const std::string &text, char status, CUList &exempt_list)
+{
+ /* Server origin */
+ if (!user)
+ return;
+
+ if (target_type != TYPE_CHANNEL)
+ return;
+
+ Channel* channel = (Channel*) dest;
+
+ Membership* memb = channel->GetUser(user);
+ if (!memb || !unjoined.set(memb, 0))
+ return;
+
+ /* Display the join to everyone else (the user who joined got it earlier) */
+ channel->WriteAllExceptSender(user, false, 0, "JOIN %s", channel->name.c_str());
+
+ std::string ms = memb->modes;
+ for(unsigned int i=0; i < memb->modes.length(); i++)
+ ms.append(" ").append(user->nick);
+
+ if (ms.length() > 0)
+ channel->WriteAllExceptSender(user, false, 0, "MODE %s +%s", channel->name.c_str(), ms.c_str());
+}