本文整理汇总了C++中chanserv::Channel::WhoSends方法的典型用法代码示例。如果您正苦于以下问题:C++ Channel::WhoSends方法的具体用法?C++ Channel::WhoSends怎么用?C++ Channel::WhoSends使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类chanserv::Channel
的用法示例。
在下文中一共展示了Channel::WhoSends方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Execute
void Execute(CommandSource &source, const std::vector<Anope::string> ¶ms) override
{
const Anope::string &chan = params[0];
User *u = source.GetUser();
Channel *c = Channel::Find(chan);
if (!c)
{
source.Reply(_("Channel \002{0}\002 doesn't exist."), chan);
return;
}
ChanServ::Channel *ci = c->ci;
if (!ci)
{
source.Reply(_("Channel \002{0}\002 isn't registered."), c->name);
return;
}
if (!source.AccessFor(ci).HasPriv("INVITE") && !source.HasCommand("chanserv/invite"))
{
source.Reply(_("Access denied. You do not have privilege \002{0}\002 on \002{1}\002."), "INVITE", ci->GetName());
return;
}
User *u2;
if (params.size() == 1)
u2 = u;
else
u2 = User::Find(params[1], true);
if (!u2)
{
source.Reply(_("\002{0}\002 isn't currently online."), params.size() > 1 ? params[1] : source.GetNick());
return;
}
if (c->FindUser(u2))
{
if (u2 == u)
source.Reply(_("You are already in \002{0}\002!"), c->name);
else
source.Reply(_("\002{0}\002 is already in \002{1}\002!"), u2->nick, c->name);
return;
}
bool override = !source.AccessFor(ci).HasPriv("INVITE");
IRCD->SendInvite(ci->WhoSends(), c, u2);
if (u2 != u)
{
source.Reply(_("\002{0}\002 has been invited to \002{1}\002."), u2->nick, c->name);
u2->SendMessage(ci->WhoSends(), _("You have been invited to \002{0}\002 by \002{1}\002."), c->name, source.GetNick());
Log(override ? LOG_OVERRIDE : LOG_COMMAND, source, this, ci) << "for " << u2->nick;
}
示例2: OnLog
void OnLog(Logger *logger) override
{
User *user = logger->GetUser();
ChanServ::Channel *channel = logger->GetCi();
Command *command = logger->GetCommand();
CommandSource *source = logger->GetSource();
if (logger->GetType() != LogType::COMMAND || user == nullptr || command == nullptr || channel == nullptr || !Me || !Me->IsSynced())
return;
Channel *c = channel->GetChannel();
for (LogSetting *log : channel->GetRefs<LogSetting *>())
{
/* wrong command */
if (log->GetServiceName() != command->GetName())
continue;
/* if a command name is given check the service and the command */
if (!log->GetCommandName().empty())
{
/* wrong service (only check if not a fantasy command, though) */
if (!source->c && log->GetCommandService() != source->service->nick)
continue;
if (!log->GetCommandName().equals_ci(source->GetCommand()))
continue;
}
const Anope::string &buffer = logger->GetMaskedMessage();
if (log->GetMethod().equals_ci("MEMO") && memoserv && channel->WhoSends() != NULL)
memoserv->Send(channel->WhoSends()->nick, channel->GetName(), buffer, true);
else if (source->c)
/* Sending a channel message or notice in response to a fantasy command */;
else if (log->GetMethod().equals_ci("MESSAGE") && c)
{
IRCD->SendPrivmsg(channel->WhoSends(), log->GetExtra() + c->name, "{0}", buffer);
#warning "fix idletimes"
//l->ci->WhoSends()->lastmsg = Anope::CurTime;
}
else if (log->GetMethod().equals_ci("NOTICE") && c)
IRCD->SendNotice(channel->WhoSends(), log->GetExtra() + c->name, "{0}", buffer);
}
}
示例3: Execute
void Execute(CommandSource &source, const std::vector<Anope::string> ¶ms) override
{
const Anope::string &chan = params[0];
User *u = source.GetUser();
Channel *c = Channel::Find(chan);
if (!c)
{
source.Reply(_("Channel \002{0}\002 doesn't exist."), chan);
return;
}
ChanServ::Channel *ci = c->GetChannel();
if (!ci)
{
source.Reply(_("Channel \002{0}\002 isn't registered."), c->name);
return;
}
if (!source.AccessFor(ci).HasPriv("INVITE") && !source.HasOverrideCommand("chanserv/invite"))
{
source.Reply(_("Access denied. You do not have privilege \002{0}\002 on \002{1}\002."), "INVITE", ci->GetName());
return;
}
User *u2;
if (params.size() == 1)
u2 = u;
else
u2 = User::Find(params[1], true);
if (!u2)
{
source.Reply(_("\002{0}\002 isn't currently online."), params.size() > 1 ? params[1] : source.GetNick());
return;
}
if (c->FindUser(u2))
{
if (u2 == u)
source.Reply(_("You are already in \002{0}\002!"), c->name);
else
source.Reply(_("\002{0}\002 is already in \002{1}\002!"), u2->nick, c->name);
return;
}
IRCD->Send<messages::Invite>(ci->WhoSends(), c, u2);
if (u2 != u)
{
source.Reply(_("\002{0}\002 has been invited to \002{1}\002."), u2->nick, c->name);
u2->SendMessage(ci->WhoSends(), _("You have been invited to \002{0}\002 by \002{1}\002."), c->name, source.GetNick());
logger.Command(source, ci, _("{source} used {command} on {channel} to invite {0}"), u2->nick);
}
else
{
u2->SendMessage(ci->WhoSends(), _("You have been invited to \002{0}\002."), c->name);
logger.Command(source, ci, _("{source} used {command} on {channel}"));
}
}