Exemple #1
0
            public async Task Restart(CommandContext ctx)
            {
                if (await LockObj.WaitAsync(0).ConfigureAwait(false))
                {
                    DiscordMessage?msg = null;
                    try
                    {
                        msg = await ctx.RespondAsync("Saving state...").ConfigureAwait(false);

                        await StatsStorage.SaveAsync(true).ConfigureAwait(false);

                        msg = await msg.UpdateOrCreateMessageAsync(ctx.Channel, "Restarting...").ConfigureAwait(false);

                        Restart(ctx.Channel.Id, "Restarted due to command request");
                    }
                    catch (Exception e)
                    {
                        await msg.UpdateOrCreateMessageAsync(ctx.Channel, "Restarting failed: " + e.Message).ConfigureAwait(false);
                    }
                    finally
                    {
                        LockObj.Release();
                    }
                }
                else
                {
                    await ctx.RespondAsync("Update is in progress").ConfigureAwait(false);
                }
            }
Exemple #2
0
            public async Task Update(CommandContext ctx)
            {
                if (await LockObj.WaitAsync(0).ConfigureAwait(false))
                {
                    DiscordMessage?msg = null;
                    try
                    {
                        Config.Log.Info("Checking for available bot updates...");
                        msg = await msg.UpdateOrCreateMessageAsync(ctx.Channel, "Checking for bot updates...").ConfigureAwait(false);

                        var(updated, stdout) = await UpdateAsync().ConfigureAwait(false);

                        if (!string.IsNullOrEmpty(stdout))
                        {
                            await ctx.SendAutosplitMessageAsync("```" + stdout + "```").ConfigureAwait(false);
                        }
                        if (!updated)
                        {
                            return;
                        }

                        msg = await ctx.RespondAsync("Saving state...").ConfigureAwait(false);

                        await StatsStorage.SaveAsync(true).ConfigureAwait(false);

                        msg = await msg.UpdateOrCreateMessageAsync(ctx.Channel, "Restarting...").ConfigureAwait(false);

                        Restart(ctx.Channel.Id, "Restarted after successful bot update");
                    }
                    catch (Exception e)
                    {
                        await msg.UpdateOrCreateMessageAsync(ctx.Channel, "Updating failed: " + e.Message).ConfigureAwait(false);
                    }
                    finally
                    {
                        LockObj.Release();
                    }
                }
                else
                {
                    await ctx.RespondAsync("Update is already in progress").ConfigureAwait(false);
                }
            }