private async void AddUser() { if (_raidService.AddUser(_raid.RaidId, _user, _role, _availability, _usedAccount, out string resultMessage)) { try { await UserExtensions.SendMessageAsync(_user, resultMessage); IUserMessage userMessage = (IUserMessage)await _channel.GetMessageAsync(_raid.MessageId); await userMessage.ModifyAsync(msg => msg.Embed = _raid.CreateRaidMessage()); await _logService.LogRaid($"{_raid.Users[_user.Id].Nickname} signed up as {_availability}", _raid); } catch { } finally { _conversationService.CloseConversation(_user.Id); } } else { resultMessage += $"\n\n{CreateSignUpMessage(_raid)}"; await UserExtensions.SendMessageAsync(_user, resultMessage); } }
protected override async Task ProcessUncanceledMessage(string message) { switch (_edit) { case Edits.Description: _raid.Description = message; break; case Edits.Duation: if (!await EditDuration(message)) { return; } break; case Edits.Time: if (!await EditTime(message)) { return; } break; case Edits.Title: _raid.Title = message; break; case Edits.Organisator: _raid.Organisator = message; break; case Edits.Guild: _raid.Guild = message; break; case Edits.VoiceChat: _raid.VoiceChat = message; break; } try { await _userMessage.ModifyAsync(msg => msg.Embed = _raid.CreateRaidMessage()); await UserExtensions.SendMessageAsync(_user, "Successfully modified the raid."); } catch { } finally { _conversationService.CloseConversation(_user.Id); _raidService.UpdateRaid(_raid.RaidId, _raid); } }
private async Task ProcessDescriptionAsync(string message) { _raid.Roles.Find(r => r.Name == _role).Description = message; try { await _userMessage.ModifyAsync(msg => msg.Embed = _raid.CreateRaidMessage()); await UserExtensions.SendMessageAsync(_user, "Successfully modified the raid."); } catch { } finally { _conversationService.CloseConversation(_user.Id); _raidService.UpdateRaid(_raid.RaidId, _raid); } }
public async Task <ulong> PostRaidMessageAsync(ITextChannel channel, Raid raid) { if (channel != null) { var raidMessage = await channel.SendMessageAsync(embed : raid.CreateRaidMessage()); await raidMessage.AddReactionAsync(Constants.SignOnEmoji); await raidMessage.AddReactionAsync(Constants.UnsureEmoji); await raidMessage.AddReactionAsync(Constants.BackupEmoji); await raidMessage.AddReactionAsync(Constants.FlexEmoji); await raidMessage.AddReactionAsync(Constants.SignOffEmoji); return(raidMessage.Id); } else { throw new ArgumentNullException(); } }
protected override async Task ProcessUncanceledMessage(string message) { switch (_state) { case State.creation: if (await CreateRaid(message)) { string previewMessage = $"Raid preview: react with {Constants.SignOnEmoji} to create the raid or with {Constants.SignOffEmoji} to cancel."; IUserMessage raidMessage = await UserExtensions.SendMessageAsync(_user, previewMessage, embed : _raid.CreateRaidMessage()); await raidMessage.AddReactionAsync(Constants.SignOnEmoji); await raidMessage.AddReactionAsync(Constants.SignOffEmoji); _state = State.acception; } else { await UserExtensions.SendMessageAsync(_user, $"Creation of the raid failed."); _conversationService.CloseConversation(_user.Id); } break; case State.acception: if (message.Equals(Constants.SignOnEmoji.Name)) { ulong raidId = await _raidService.PostRaidMessageAsync(_channel, _raid); _raidService.AddRaid(_raid, _guild.Id, _channel.Id, raidId); await UserExtensions.SendMessageAsync(_user, "Created the raid successfully."); } else { await UserExtensions.SendMessageAsync(_user, $"Creation of the raid canceled."); } _conversationService.CloseConversation(_user.Id); break; } }
public async Task HandleReaction(SocketReaction reaction, IGuildUser user, ulong guildId, string raidId) { if (!Raids.ContainsKey(raidId)) { return; } Raid raid = Raids[raidId]; IUserMessage userMessage = (IUserMessage)await reaction.Channel.GetMessageAsync(raid.MessageId); IEmote emote = reaction.Emote; if (emote.Equals(Constants.SignOffEmoji)) { RemoveUser(raid.RaidId, user.Id); SaveRaids(); await userMessage.ModifyAsync(msg => msg.Embed = raid.CreateRaidMessage()); await userMessage.RemoveReactionAsync(reaction.Emote, user); return; } ulong userId = user.Id; if (_userService.GetAccounts(guildId, userId, raid.AccountType).Count == 0) { await UserExtensions.SendMessageAsync(user, $"No Account found, please add an Account with \"!user add {raid.AccountType} <AccountName>\".\n" + "\n**This command only works on a server.**"); return; } if (emote.Equals(Constants.FlexEmoji)) { if (!_conversationService.UserHasConversation(user.Id)) { _conversationService.OpenSignUpConversation(this, reaction, user, raid, Constants.Availability.Flex); } } else if (raid.Users.ContainsKey(userId)) { if (emote.Equals(Constants.SignOnEmoji)) { if (raid.IsAvailabilityChangeAllowed(userId, Constants.Availability.Yes)) { raid.Users[userId].Availability = Constants.Availability.Yes; } } else if (emote.Equals(Constants.UnsureEmoji)) { raid.Users[userId].Availability = Constants.Availability.Maybe; } else if (emote.Equals(Constants.BackupEmoji)) { raid.Users[userId].Availability = Constants.Availability.Backup; } } else if (!_conversationService.UserHasConversation(user.Id)) { if (emote.Equals(Constants.SignOnEmoji)) { _conversationService.OpenSignUpConversation(this, reaction, user, raid, Constants.Availability.Yes); } else if (emote.Equals(Constants.UnsureEmoji)) { _conversationService.OpenSignUpConversation(this, reaction, user, raid, Constants.Availability.Maybe); } else if (emote.Equals(Constants.BackupEmoji)) { _conversationService.OpenSignUpConversation(this, reaction, user, raid, Constants.Availability.Backup); } } SaveRaids(); await userMessage.ModifyAsync(msg => msg.Embed = raid.CreateRaidMessage()); await userMessage.RemoveReactionAsync(reaction.Emote, user); }