void management::kick(std::vector< std::string > eventData) { output::instance().addOutput("void management::kick(std::vector< std::string > eventData)", 11); std::string channelName = eventData[2]; deleteFirst(channelName, ":"); std::string userName = eventData[3]; leaveChannel(channelName, userName); }
void management::part(std::vector< std::string > eventData) { output::instance().addOutput("void management::part(std::vector< std::string > eventData)", 11); std::string channelName = eventData[2]; deleteFirst(channelName, ":"); std::string userName = eventData[0]; nickFromHostmask(userName); leaveChannel(channelName, userName); }
void IRC::sendCommand(const std::string &message) { char command[IRC_MESSAGE_SIZE]; if (message[0]=='/') { char tempMessage[IRC_MESSAGE_SIZE]; strncpy(tempMessage, message.c_str(), IRC_MESSAGE_SIZE); tempMessage[IRC_MESSAGE_SIZE - 1] = 0; char *cmd = strtok(tempMessage, " \t"); char *arg1 = strtok(NULL, " \t"); char *arg2 = strtok(NULL, "\0"); if (verbose) printf ("c = [%s] a1 = [%s] a2 = [%s]\n", cmd, arg1, arg2); if ((strcasecmp(cmd, "/msg")==0) && arg1 && arg2) { snprintf(command, IRC_MESSAGE_SIZE, "PRIVMSG %s :%s", arg1, arg2); sendString(command); } else if ((strcasecmp(cmd, "/whois")==0) && arg1) { snprintf(command, IRC_MESSAGE_SIZE, "WHOIS %s", arg1); sendString(command); } else if ((strcasecmp(cmd, "/join")==0) && arg1) { joinChannel(arg1); } else if ((strcasecmp(cmd, "/part")==0) && arg1) { leaveChannel(arg1); } else if ((strcasecmp(cmd, "/leave")==0) && arg1) { leaveChannel(arg1); } } else { std::string command = "PRIVMSG " + chatChan + " :" + message; if (verbose) std::cout << "YOG::sendString(" << command << ")." << std::endl; sendString(command); } }
bool IRCSession::leaveRoom(shared_ptr<IRCRoom> room) { if(room == nullptr) { OS_ASSERTFALSE(); return false; } OS_LOCK(m_dataCS); Rooms::iterator i = m_rooms.find(room->getName()); if(i == m_rooms.end()) return false; m_rooms.erase(i); if(room->getType() == ircTargetTypeChannel) leaveChannel(room->getName()); return true; }
void management::quit(std::vector< std::string > eventData) { output::instance().addOutput("void management::quit(std::vector< std::string > eventData)", 11); std::string userName = eventData[0]; nickFromHostmask(userName); if (userName == g_BotNick) { // should never see its own quit :S exit(EXIT_FAILURE); } else { if (users::instance().find(userName)) { std::map< std::string, std::shared_ptr<channel> > userChannels = users::instance().get(userName)->getChannels(); std::map< std::string, std::shared_ptr<channel> >::iterator userChannelsIterator; for (userChannelsIterator = userChannels.begin(); userChannelsIterator != userChannels.end(); ++userChannelsIterator) { leaveChannel(userChannelsIterator->first, userName); } } users::instance().del(userName); } }