本文整理汇总了C++中Channel::GetExtBanStatus方法的典型用法代码示例。如果您正苦于以下问题:C++ Channel::GetExtBanStatus方法的具体用法?C++ Channel::GetExtBanStatus怎么用?C++ Channel::GetExtBanStatus使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Channel
的用法示例。
在下文中一共展示了Channel::GetExtBanStatus方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DoMsg
ModResult DoMsg(User *user, void *dest, int target_type, std::string &text, char status, CUList &exempt_list, bool privmsg)
{
if (!IS_LOCAL(user) || target_type != TYPE_CHANNEL || status)
return MOD_RES_PASSTHRU;
Channel* chan = static_cast<Channel*>(dest);
ModResult res = ServerInstance->OnCheckExemption(user,chan,"opmoderated");
if (res == MOD_RES_ALLOW)
return MOD_RES_PASSTHRU;
if (!chan->GetExtBanStatus(user, 'u').check(!chan->IsModeSet(&mh)) && chan->GetPrefixValue(user) < VOICE_VALUE)
{
FOREACH_MOD(I_OnText,OnText(user,chan,TYPE_CHANNEL,text,status,exempt_list));
chan->WriteAllExcept(user, false, '@', exempt_list, "%s @%s :%s",
privmsg ? "PRIVMSG" : "NOTICE", chan->name.c_str(), text.c_str());
if (privmsg)
{
FOREACH_MOD(I_OnUserMessage,OnUserMessage(user,chan,TYPE_CHANNEL,text,'@',exempt_list));
}
else
FOREACH_MOD(I_OnUserNotice,OnUserNotice(user,chan,TYPE_CHANNEL,text,'@',exempt_list));
return MOD_RES_DENY;
}
return MOD_RES_PASSTHRU;
}
示例2: OnUserPreMessage
ModResult OnUserPreMessage(User* user, const MessageTarget& target, MessageDetails& details) override
{
if (!IS_LOCAL(user))
return MOD_RES_PASSTHRU;
std::string ctcpname;
if (!details.IsCTCP(ctcpname) || irc::equals(ctcpname, "ACTION"))
return MOD_RES_PASSTHRU;
if (target.type == MessageTarget::TYPE_CHANNEL)
{
Channel* c = target.Get<Channel>();
ModResult res = CheckExemption::Call(exemptionprov, user, c, "noctcp");
if (res == MOD_RES_ALLOW)
return MOD_RES_PASSTHRU;
if (!c->GetExtBanStatus(user, 'C').check(!c->IsModeSet(nc)))
{
user->WriteNumeric(ERR_CANNOTSENDTOCHAN, c->name, "Can't send CTCP to channel (+C set)");
return MOD_RES_DENY;
}
}
else if (target.type == MessageTarget::TYPE_USER)
{
User* u = target.Get<User>();
if (u->IsModeSet(ncu))
{
user->WriteNumeric(ERR_CANTSENDTOUSER, u->nick, "Can't send CTCP to user (+T set)");
return MOD_RES_PASSTHRU;
}
}
return MOD_RES_PASSTHRU;
}
示例3: OnUserPreNick
virtual ModResult OnUserPreNick(User* user, const std::string &newnick)
{
if (!IS_LOCAL(user))
return MOD_RES_PASSTHRU;
// Allow forced nick changes.
if (ServerInstance->NICKForced.get(user))
return MOD_RES_PASSTHRU;
for (UCListIter i = user->chans.begin(); i != user->chans.end(); i++)
{
Channel* curr = *i;
ModResult res = ServerInstance->OnCheckExemption(user,curr,"nonick");
if (res == MOD_RES_ALLOW)
continue;
if (override && IS_OPER(user))
continue;
if (!curr->GetExtBanStatus(user, 'N').check(!curr->IsModeSet('N')))
{
user->WriteNumeric(ERR_CANTCHANGENICK, "%s :Can't change nickname while on %s (+N is set)",
user->nick.c_str(), curr->name.c_str());
return MOD_RES_DENY;
}
}
return MOD_RES_PASSTHRU;
}
示例4: OnUserPreMessage
virtual ModResult OnUserPreMessage(User *user, void *dest, int target_type, std::string &text, char status, CUList &exempt_list)
{
if (!IS_LOCAL(user) || target_type != TYPE_CHANNEL)
return MOD_RES_PASSTHRU;
Channel* chan = static_cast<Channel*>(dest);
if (chan->GetExtBanStatus(user, 'w') == MOD_RES_DENY && chan->GetPrefixValue(user) < VOICE_VALUE)
{
return MOD_RES_DENY;
}
return MOD_RES_PASSTHRU;
}
示例5: OnUserPreNotice
virtual ModResult OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
{
ModResult res;
if ((target_type == TYPE_CHANNEL) && (IS_LOCAL(user)))
{
Channel* c = (Channel*)dest;
if (!c->GetExtBanStatus(user, 'T').check(!c->IsModeSet('T')))
{
res = ServerInstance->OnCheckExemption(user,c,"nonotice");
if (res == MOD_RES_ALLOW)
return MOD_RES_PASSTHRU;
else
{
user->WriteNumeric(ERR_CANNOTSENDTOCHAN, "%s %s :Can't send NOTICE to channel (+T set)",user->nick.c_str(), c->name.c_str());
return MOD_RES_DENY;
}
}
}
return MOD_RES_PASSTHRU;
}
示例6: OnUserPreMessage
virtual ModResult OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
{
if (target_type == TYPE_CHANNEL)
{
if ((!IS_LOCAL(user)) || (text.length() < minlen))
return MOD_RES_PASSTHRU;
Channel* c = (Channel*)dest;
ModResult res = ServerInstance->OnCheckExemption(user,c,"blockcaps");
if (res == MOD_RES_ALLOW)
return MOD_RES_PASSTHRU;
if (!c->GetExtBanStatus(user, 'B').check(!c->IsModeSet('B')))
{
int caps = 0;
const char* actstr = "\1ACTION ";
int act = 0;
for (std::string::iterator i = text.begin(); i != text.end(); i++)
{
/* Smart fix for suggestion from Jobe, ignore CTCP ACTION (part of /ME) */
if (*actstr && *i == *actstr++ && act != -1)
{
act++;
continue;
}
else
act = -1;
caps += capsmap[(unsigned char)*i];
}
if ( ((caps*100)/(int)text.length()) >= percent )
{
user->WriteNumeric(ERR_CANNOTSENDTOCHAN, "%s %s :Your message cannot contain more than %d%% capital letters if it's longer than %d characters", user->nick.c_str(), c->name.c_str(), percent, minlen);
return MOD_RES_DENY;
}
}
}
return MOD_RES_PASSTHRU;
}