private async Task OnMessageRecieved(SocketMessage arg) { if (arg.Author.IsBot) { return; } var m = arg as SocketUserMessage; int argpos = 0; //Skip commands if (m.HasCharPrefix('!', ref argpos)) { return; } InteractProcess Process = GetInteractProcessForUser(arg.Author); if (Process != null) { if (arg.Content.ToLower() == "cancel") { Process.Cancel(); } else { bool MoreSteps = Process.ExecuteStep(arg); if (MoreSteps) { await PromptUserForStep(Process); } } } }
public void Execute(SocketMessage Message, InteractProcess Process) { if (Callback != null) { Callback.Invoke(Message, Process, this); } }
public Task BeginInteractionProcess(InteractProcess Process, IUser User, ISocketMessageChannel Channel) { Process.InitiatingUser = User; Process.Channel = Channel; Process.Client = Client; Process.OnProcessCancel += EndProcess; Process.OnProcessComplete += EndProcess; Process.OnProcessStart += ProcessStart; Process.Start(); return(Task.CompletedTask); }
private async Task PromptUserForStep(InteractProcess Process) { await Process.Channel.SendMessageAsync(Process.CurrentStep.Description); }
private Task EndProcess(InteractProcess Process) { ActiveInteractProcesses.Remove(Process); return(Task.CompletedTask); }
private async Task ProcessStart(InteractProcess Process) { ActiveInteractProcesses.Add(Process); await PromptUserForStep(Process); }