+static MODCMD_FUNC(cmd_sjoin)
+{
+ struct userNode *bot = cmd->parent->bot;
+
+ if (!IsChannelName(argv[1])) {
+ reply("MSG_NOT_CHANNEL_NAME");
+ return 0;
+ } else if (!(channel = GetChannel(argv[1]))) {
+ channel = AddChannel(argv[1], now, NULL, NULL, NULL);
+ AddChannelUser(bot, channel)->modes |= MODE_CHANOP;
+ } else if (GetUserMode(channel, bot)) {
+ reply("WBMSG_ALREADY_JOINED", channel->name);
+ return 0;
+ } else {
+ struct mod_chanmode change;
+ mod_chanmode_init(&change);
+ change.argc = 1;
+ change.args[0].mode = MODE_CHANOP;
+ change.args[0].u.member = AddChannelUser(bot, channel);
+ modcmd_chanmode_announce(&change);
+ }
+ irc_fetchtopic(bot, channel->name);
+ reply("WBMSG_JOIN_DONE", channel->name);
+ return 1;
+}
+