コード例 #1
0
ファイル: management.cpp プロジェクト: kwakkel1000/ircppbot
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);
}
コード例 #2
0
ファイル: management.cpp プロジェクト: kwakkel1000/ircppbot
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);
}
コード例 #3
0
ファイル: IRC.cpp プロジェクト: krichter722/glob2-git-hg
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);
	}
}
コード例 #4
0
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;
}
コード例 #5
0
ファイル: management.cpp プロジェクト: kwakkel1000/ircppbot
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);
    }
}