private void ProcessCommand(DiscordEventArgs e) { var clientType = GetType().ToString(); var argsList = new List <string>(); DiscordUser user; string channel, cmdText; (user, channel, cmdText) = ExtractFromEventArgs(e); if (user.IsBot) { return; } var commandPieces = cmdText.Split(' '); var command = commandPieces[0].Replace("!", string.Empty); var userName = user?.Username ?? string.Empty; var userId = user?.Id.ToString() ?? "0"; for (var i = 1; i < commandPieces.Length; i++) { argsList.Add(commandPieces[i]); } OnChatCommandReceived?.Invoke(this, new Core.ChatCommandEventArgs(command, argsList, channel, userName, userId, clientType, Core.UserRole.Moderator)); }
private static async Task Status(DiscordEventArgs e) { //Set the status to a random one from the database var c = e.Client; Utilities.Con.Open(); using (var cmd = new SqliteCommand( "SELECT text FROM Status ORDER BY RANDOM() LIMIT 1", Utilities.Con)) { using (var rdr = cmd.ExecuteReader()) { if (rdr.Read()) { c?.UpdateStatusAsync(new DiscordActivity(rdr.GetString(0), ActivityType.ListeningTo)); } } } Utilities.Con.Close(); await Task.CompletedTask; }
private (DiscordUser user, string channel, string cmdText) ExtractFromEventArgs(DiscordEventArgs e) { switch (e) { case MessageUpdateEventArgs u: return(u.Author, u.Channel.Id.ToString(), u.Message.Content.ToLower()); case MessageCreateEventArgs c: return(c.Author, c.Channel.Id.ToString(), c.Message.Content.ToLower()); } return(null, string.Empty, string.Empty); }
private static async Task MessageReactionAddedRemoved(DiscordClient s, DiscordEventArgs _e) { (bool added, DiscordMessage Message, DiscordMember User, DiscordEmoji Emoji)e; // detect reaction was added or removed if (_e is MessageReactionAddEventArgs _ea) { e = (true, _ea.Message, (DiscordMember)_ea.User, _ea.Emoji); } else if (_e is MessageReactionRemoveEventArgs _er) { e = (false, _er.Message, (DiscordMember)_er.User, _er.Emoji); } else { return; } if (e.Message.Author != s.CurrentUser || (e.User).IsBot || (e.User).VoiceState.Channel == null ) { return; } foreach (var game in games) { if (game.Value.startMessage != e.Message) { continue; } if ((e.User).VoiceState.Channel != game.Value.voiceChannel) { return; } //check right emoji int eid; if (-1 == (eid = Array.IndexOf(EmojiList, e.Emoji))) { return; } var player = game.Value.players[eid]; if (e.added) { if (player.uid == null) { player.uid = e.User; // TODO only 1 color per DiscordMember } } else { if (player.uid == e.User) { player.uid = null; } } await e.Message.ModifyAsync(null, buildMessage(game.Key, game.Value.voiceChannel.Name, game.Value.players)); return; } }