Ban command update, join/leave messages
* The /ban command doesn't require the target user to be online at the time of the ban. * Update the presence messages so they will generally only go to the primary (first) public channel, and also to another public channel if the user is currently looking at one of the others.
This commit is contained in:
parent
264b8f2a46
commit
f75ad32728
|
@ -229,14 +229,11 @@ func (s *Server) BanCommand(words []string, sub *Subscriber) {
|
||||||
|
|
||||||
log.Info("Operator %s bans %s for %d hours", sub.Username, username, duration/time.Hour)
|
log.Info("Operator %s bans %s for %d hours", sub.Username, username, duration/time.Hour)
|
||||||
|
|
||||||
other, err := s.GetSubscriber(username)
|
// Add them to the ban list.
|
||||||
if err != nil {
|
|
||||||
sub.ChatServer("/ban: username not found: %s", username)
|
|
||||||
} else {
|
|
||||||
// Ban them.
|
|
||||||
BanUser(username, duration)
|
BanUser(username, duration)
|
||||||
|
|
||||||
// Broadcast it to everyone.
|
// If the target user is currently online, disconnect them and broadcast the ban to everybody.
|
||||||
|
if other, err := s.GetSubscriber(username); err == nil {
|
||||||
s.Broadcast(messages.Message{
|
s.Broadcast(messages.Message{
|
||||||
Action: messages.ActionPresence,
|
Action: messages.ActionPresence,
|
||||||
Username: username,
|
Username: username,
|
||||||
|
@ -249,8 +246,9 @@ func (s *Server) BanCommand(words []string, sub *Subscriber) {
|
||||||
})
|
})
|
||||||
other.authenticated = false
|
other.authenticated = false
|
||||||
other.Username = ""
|
other.Username = ""
|
||||||
sub.ChatServer("%s has been banned from the room for %d hours.", username, duration/time.Hour)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub.ChatServer("%s has been banned from the room for %d hours.", username, duration/time.Hour)
|
||||||
}
|
}
|
||||||
|
|
||||||
// UnbanCommand handles the `/unban` operator command.
|
// UnbanCommand handles the `/unban` operator command.
|
||||||
|
|
|
@ -83,7 +83,6 @@ func (s *Server) OnLogin(sub *Subscriber, msg messages.Message) {
|
||||||
sub.SendJSON(messages.Message{
|
sub.SendJSON(messages.Message{
|
||||||
Action: messages.ActionKick,
|
Action: messages.ActionKick,
|
||||||
})
|
})
|
||||||
s.DeleteSubscriber(sub)
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
14
src/App.vue
14
src/App.vue
|
@ -1277,16 +1277,26 @@ export default {
|
||||||
isJoin = true;
|
isJoin = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Push it to the history of all public channels (depending on user preference).
|
// Push it to the history of the public channels (respecting user preferences).
|
||||||
if ((isJoin && this.prefs.joinMessages) || (isLeave && this.prefs.exitMessages)
|
if ((isJoin && this.prefs.joinMessages) || (isLeave && this.prefs.exitMessages)
|
||||||
|| (!isJoin && !isLeave)) {
|
|| (!isJoin && !isLeave)) {
|
||||||
for (let channel of this.config.channels) {
|
// Always put them in the first public channel.
|
||||||
|
let channel = this.config.channels[0];
|
||||||
this.pushHistory({
|
this.pushHistory({
|
||||||
channel: channel.ID,
|
channel: channel.ID,
|
||||||
action: msg.action,
|
action: msg.action,
|
||||||
username: msg.username,
|
username: msg.username,
|
||||||
message: msg.message,
|
message: msg.message,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// If the current user is focused on another public channel, also post it there.
|
||||||
|
if (!this.isDM && this.channel !== channel.ID) {
|
||||||
|
this.pushHistory({
|
||||||
|
channel: this.channel.ID,
|
||||||
|
action: msg.action,
|
||||||
|
username: msg.username,
|
||||||
|
message: msg.message,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user