The complete source code of IdealIRC http://www.idealirc.org/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
idealirc/ICommand/Internal/me.cpp

30 lines
893 B

#include "ICommand/ICommandPriv.h"
#include "ICommand/Commands.h"
#include "IRCClient/IRCChannel.h"
using namespace Command::Internal;
void ICommandPriv::cmd_me(const std::string& target, const std::string& message)
{
connection.ctcp(target, ACTION, message);
std::string mynick = connection.getNickname();
IWin* cw = status.getActiveWindow();
if (cw->getType() == IWin::Type::Channel) {
auto channel = connection.getChannel( cw->getButtonText().toStdString() );
auto& member = channel->getMember(mynick)->get();
const std::string& mymodes = member.modes();
if (!mymodes.empty()) {
std::string pf = connection.toMemberPrefix(mymodes);
if (!pf.empty())
mynick.insert(mynick.begin(), pf[0]);
}
}
if (!target.empty() && !message.empty())
cw->print(PrintType::Action, QStringLiteral("%1 %2")
.arg(mynick.c_str())
.arg(message.c_str()));
}