示例#1
0
文件: irc.c 项目: clehner/motobot
static void
send(module_t *module, const char *channel, const char *message) {
	irc_t *irc = (irc_t *)module;

	if (strncmp(message, me_prefix, strlen(me_prefix)) == 0) {
		const char *action = message + strlen(me_prefix);
		// Transmit an action
		printf("[%s] * %s %s\n", channel, irc->current_nick, action);

		if (irc_cmd_me(irc->session, channel, action)) {
			fprintf(stderr, "irc: %s\n", irc_strerror(irc_errno(irc->session)));
			return;
		}
	} else {
		// Send a regular message
		printf("[%s] <%s> %s\n", channel, irc->current_nick, message);

		if (irc_cmd_msg(irc->session, channel, message)) {
			fprintf(stderr, "irc: %s\n", irc_strerror(irc_errno(irc->session)));
			return;
		}
	}

	bot_on_read_log(module->bot, irc->current_nick, message);
}
bool CslIrcSession::SendCtcpAction(const wxString& channel,const wxString& text)
{
    if (!CslIrcEngine::GetThread() || m_state!=STATE_CONNECTED)
        return false;

    wxCharBuffer buffer;
    if (ConvertToChannelEncoding(channel,text,buffer))
        return irc_cmd_me(m_context.Session,U2A(channel),buffer)==0;

    return false;
}
示例#3
0
void event_channel (irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count)
{
    irc_ctx_t * ctx = (irc_ctx_t *) irc_get_ctx (session);

    if ( !origin || count != 2 )
        return;

    if ( strstr (params[1], "f**k") == 0 )
        return;

    char nickbuf[128], text[256];

    irc_target_get_nick (origin, nickbuf, sizeof(nickbuf));

    if ( ctx->insolents.find(nickbuf) == ctx->insolents.end() )
        ctx->insolents[nickbuf] = 0;

    ctx->insolents[nickbuf]++;

    printf ("'%s' swears in the channel '%s' %d times\n",
            nickbuf,
            params[1],
            ctx->insolents[nickbuf]);

    switch (ctx->insolents[nickbuf])
    {
    case 1:
        // Send a private message
        sprintf (text, "%s, please do not swear in this channel.", nickbuf);
        irc_cmd_msg (session, nickbuf, text);
        break;

    case 2:
        // Send a channel message
        sprintf (text, "%s, do not swear in this channel, or you'll leave it.", nickbuf);
        irc_cmd_msg (session, params[0], text);
        break;

    default:
        // Send a channel notice, and kick the insolent
        sprintf (text, "kicked %s from %s for swearing.", nickbuf, params[0]);
        irc_cmd_me (session, params[0], text);
        irc_cmd_kick (session, nickbuf, params[0], "swearing");
        break;
    }
}
示例#4
0
static int lua_irc_cmd_me(lua_State *L)
{
	void *session;
	const char *nch,*msg;
	int result=LIBIRC_ERR_INVAL;
	if(lua_gettop(L)==3){
		session=lua_touserdata(L,1);
		if(session!=NULL){
			nch=lua_tostring(L,2);
			msg=lua_tostring(L,3);
			if((nch!=NULL) && (msg!=NULL)){
				result=irc_cmd_me(session,nch,msg);
			}
		}
	}
	lua_pushinteger(L,result);
	return 1;
}
示例#5
0
void dazeus::Server::ctcpAction( const std::string &destination, const std::string &message ) {
	ircEventMe("ACTION_ME", destination, message);
	irc_cmd_me(IRC, destination.c_str(), message.c_str());
}
示例#6
0
void IRCSession::me(string_t target, string_t m) {
  if (irc_cmd_me( session, target, m))
    throw std::runtime_error{"Could not send message."};
}