Allow channel operators to invite users to a channel with +i
This commit is contained in:
parent
7ba5268e90
commit
4407a7419b
|
@ -21,6 +21,7 @@ class Channel
|
|||
|
||||
string key;
|
||||
Nullable!uint userLimit;
|
||||
Connection[] inviteHolders;
|
||||
|
||||
private Server _server;
|
||||
|
||||
|
@ -43,6 +44,11 @@ class Channel
|
|||
{
|
||||
memberModes[connection] = [];
|
||||
}
|
||||
|
||||
if(inviteHolders.canFind(connection))
|
||||
{
|
||||
inviteHolders = inviteHolders.remove!(c => c == connection);
|
||||
}
|
||||
}
|
||||
|
||||
void part(Connection connection, string partMessage)
|
||||
|
@ -63,6 +69,11 @@ class Channel
|
|||
memberModes.remove(connection);
|
||||
}
|
||||
|
||||
void invite(Connection connection)
|
||||
{
|
||||
inviteHolders ~= connection;
|
||||
}
|
||||
|
||||
void sendNames(Connection connection, bool sendRplEndOfNames = true)
|
||||
{
|
||||
string channelType;
|
||||
|
@ -196,6 +207,8 @@ class Channel
|
|||
|
||||
modes ~= mode;
|
||||
|
||||
//TODO: If RFC-strictness is off, clear the invite list when +i is set
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -352,8 +352,7 @@ class Connection
|
|||
{
|
||||
send(Message(_server.name, "474", [nick, channelName, "Cannot join channel (+b)"], true));
|
||||
}
|
||||
//TODO: Also account for invites from the INVITE command
|
||||
else if(channel.modes.canFind('i') && !channel.maskLists['I'].any!(m => matchesMask(m)))
|
||||
else if(channel.modes.canFind('i') && !(channel.maskLists['I'].any!(m => matchesMask(m)) || channel.inviteHolders.canFind(this)))
|
||||
{
|
||||
send(Message(_server.name, "473", [nick, channelName, "Cannot join channel (+i)"], true));
|
||||
}
|
||||
|
|
|
@ -323,6 +323,10 @@ class Server
|
|||
void invite(Connection inviter, string target, string channelName)
|
||||
{
|
||||
auto user = findConnectionByNick(target)[0];
|
||||
auto channel = findChannelByName(channelName)[0];
|
||||
|
||||
channel.invite(user);
|
||||
|
||||
user.send(Message(inviter.prefix, "INVITE", [user.nick, channelName]));
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue