bool ExecuteCommand(RelayUser user, string channel, string cmdName, string cmdArgs) { Command cmd = Command.Find(cmdName); Player p = new RelayPlayer(channel, user, this); if (cmd == null) { p.Message("Unknown command!"); return(false); } string logCmd = cmdArgs.Length == 0 ? cmdName : cmdName + " " + cmdArgs; Logger.Log(LogType.CommandUsage, "/{0} (by {1} from {2})", logCmd, user.Nick, RelayName); try { if (!p.CanUse(cmd)) { CommandPerms.Find(cmd.name).MessageCannotUse(p); return(false); } if (!cmd.SuperUseable) { p.Message(cmd.name + " can only be used in-game."); return(false); } cmd.Use(p, cmdArgs); } catch (Exception ex) { p.Message("CMD Error: " + ex); Logger.LogError(ex); } return(true); }
bool HandleListPlayers(RelayUser user, string channel, string cmd, bool opchat) { bool isWho = cmd == ".who" || cmd == ".players" || cmd == "!players"; DateTime last = opchat ? lastOpWho : lastWho; if (!isWho || (DateTime.UtcNow - last).TotalSeconds <= 5) { return(false); } try { RelayPlayer p = new RelayPlayer(channel, user, this); p.group = Group.DefaultRank; MessagePlayers(p); } catch (Exception e) { Logger.LogError(e); } if (opchat) { lastOpWho = DateTime.UtcNow; } else { lastWho = DateTime.UtcNow; } return(true); }
protected override void MessagePlayers(RelayPlayer p) { ChannelSendEmbed embed = new ChannelSendEmbed(p.ChannelID); int total; List <OnlineListEntry> entries = PlayerInfo.GetOnlineList(p, p.Rank, out total); embed.Title = string.Format("{0} player{1} currently online", total, total.Plural()); foreach (OnlineListEntry e in entries) { if (e.players.Count == 0) { continue; } embed.Fields.Add( ConvertMessage(FormatRank(e)), ConvertMessage(FormatPlayers(p, e)) ); } api.SendAsync(embed); }
/// <summary> Outputs the list of online players to the given user </summary> protected virtual void MessagePlayers(RelayPlayer p) { Command.Find("Players").Use(p, "", p.DefaultCmdData); }