forked from lesderid/salty-ircd
Implement NOTICE
This commit is contained in:
parent
4df3b43138
commit
4f8aedddc9
|
@ -45,4 +45,12 @@ class Channel
|
||||||
member.send(Message(sender.mask, "PRIVMSG", [name, text], true));
|
member.send(Message(sender.mask, "PRIVMSG", [name, text], true));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sendNotice(Connection sender, string text)
|
||||||
|
{
|
||||||
|
foreach(member; members.filter!(m => m.nick != sender.nick))
|
||||||
|
{
|
||||||
|
member.send(Message(sender.mask, "NOTICE", [name, text], true));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -137,6 +137,10 @@ class Connection
|
||||||
if(!registered) sendErrNotRegistered();
|
if(!registered) sendErrNotRegistered();
|
||||||
else onPrivMsg(message);
|
else onPrivMsg(message);
|
||||||
break;
|
break;
|
||||||
|
case "NOTICE":
|
||||||
|
if(!registered) sendErrNotRegistered();
|
||||||
|
else onNotice(message);
|
||||||
|
break;
|
||||||
case "WHO":
|
case "WHO":
|
||||||
if(!registered) sendErrNotRegistered();
|
if(!registered) sendErrNotRegistered();
|
||||||
else onWho(message);
|
else onWho(message);
|
||||||
|
@ -332,6 +336,32 @@ class Connection
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void onNotice(Message message)
|
||||||
|
{
|
||||||
|
//TODO: Support special message targets
|
||||||
|
auto target = message.parameters[0];
|
||||||
|
auto text = message.parameters[1];
|
||||||
|
|
||||||
|
//TODO: Figure out what we are allowed to send exactly
|
||||||
|
|
||||||
|
if(message.parameters.length < 2)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Server.isValidChannelName(target))
|
||||||
|
{
|
||||||
|
if(_server.channels.canFind!(c => c.name == target))
|
||||||
|
{
|
||||||
|
_server.noticeToChannel(this, target, text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(Server.isValidNick(target) && _server.connections.canFind!(c => c.nick == target))
|
||||||
|
{
|
||||||
|
_server.noticeToUser(this, target, text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void onWho(Message message)
|
void onWho(Message message)
|
||||||
{
|
{
|
||||||
if(message.parameters.length == 0)
|
if(message.parameters.length == 0)
|
||||||
|
|
|
@ -182,6 +182,18 @@ class Server
|
||||||
user.send(Message(sender.mask, "PRIVMSG", [target, text], true));
|
user.send(Message(sender.mask, "PRIVMSG", [target, text], true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void noticeToChannel(Connection sender, string target, string text)
|
||||||
|
{
|
||||||
|
auto channel = channels.find!(c => c.name == target)[0];
|
||||||
|
channel.sendNotice(sender, text);
|
||||||
|
}
|
||||||
|
|
||||||
|
void noticeToUser(Connection sender, string target, string text)
|
||||||
|
{
|
||||||
|
auto user = connections.find!(c => c.nick == target)[0];
|
||||||
|
user.send(Message(sender.mask, "NOTICE", [target, text], true));
|
||||||
|
}
|
||||||
|
|
||||||
void listen(ushort port = 6667)
|
void listen(ushort port = 6667)
|
||||||
{
|
{
|
||||||
listenTCP(port, &acceptConnection);
|
listenTCP(port, &acceptConnection);
|
||||||
|
|
Loading…
Reference in New Issue