private Task OnGuildAvailable(SocketGuild arg) { if (AndroidInstances.TryGetValue(arg.Id, out var existing)) { existing.Shutdown(); AndroidInstances.Remove(arg.Id); } var instance = new AndroidInstance(arg.Id); if (AndroidStateSerialiser.Load(instance.GuildID, out var state)) { foreach (var item in state.Listeners) { item.Android = instance; item.Initialise(); } instance.Active = state.Active; instance.Listeners.AddRange(state.Listeners); instance.Moderation.MutesByUser = state.MutedUsers; } AndroidInstances.Add(arg.Id, instance); return(Task.CompletedTask); }
/// <summary> /// Save all instances and stop everything /// </summary> public void Stop() { AndroidStateSerialiser.SaveAll(this); Client.LoggedOut += () => { IsRunning = false; return(Task.CompletedTask); }; Task.Run(Client.LogoutAsync).Wait(); Task.Run(Client.StopAsync).Wait(); }