Finished the Embed rebuild of Snapple.cs.

This commit is contained in:
Chris Darnell committed 2021-04-30 23:30:32 -07:00
1 parent b33494e01f
commit 1e26a5f56c
2 files changed
+1095 -12

No files matched your search

+93 -12
View File
@@ -1,51 +1,132 @@
using DSharpPlus.CommandsNext;
using DSharpPlus.CommandsNext.Attributes;
using DSharpPlus.Entities;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
namespace StarsiegeBot
{
[Group("snapple")]
class SnappleFacts : BaseCommandModule
{
private readonly List<string> facts;
private List<string> facts;
private bool IsEnabled;
public SnappleFacts()
{
Console.WriteLine("Snapple Commands Loaded");
string json = File.ReadAllText("snapple.json");
facts = JsonConvert.DeserializeObject<List<string>>(json);
IsEnabled = Load();
}
[Command("snapple"), Description("Get a Snapple \"Real Fact\".")]
[GroupCommand, Description("Get a Snapple \"Real Fact\".")]
public async Task Snapplefact(CommandContext ctx, [Description("[Optional] A Snapple Fact ID")] int snapId = -1)
{
await ctx.TriggerTypingAsync();
string output;
snapId--;
try
{
await ctx.RespondAsync(facts[snapId]);
output = facts[snapId]);
return;
}
catch (Exception)
{
await ctx.RespondAsync(facts[Program.rnd.Next(0, facts.Count)]);
output = facts[Program.rnd.Next(0, facts.Count)];
}
//await ctx.RespondAsync("**Warning:** The Id's used here, are not the same as Snapple's fact numbers! (We renumbered them when we imported them.)");
await ctx.RespondAsync(StartEmbed(output));
}
[Command("snapplecount"), Description("Get a Snapple \"Real Fact\".")]
[Command("count"), Description("Get a Snapple \"Real Fact\".")]
public async Task SnappleCount(CommandContext ctx)
{
await ctx.TriggerTypingAsync();
await ctx.RespondAsync(facts.Count + " facts in the Snapple \"Real Facts\" Bank");
DiscordEmbedBuilder embed = StartEmbed(facts.Count + " facts in the Snapple \"Real Facts\" Bank");
await ctx.RespondAsync(embed);
}
[Command("load"), RequireOwner]
public async Task Load(CommandContext ctx)
{
await ctx.TriggerTypingAsync();
DiscordEmbedBuilder embed = StartEmbed("Reloading Snapple Facts");
embed.AddField("Old", (IsEnabled ? "Enabled" : "Disabled"));
_ = Load();
embed.AddField("New", (IsEnabled ? "Enabled" : "Disabled"));
await ctx.RespondAsync(embed);
}
[Command("toggle")]
public async Task Enable (CommandContext ctx, [RemainingText]string isEnabled = null)
{
// trigger the typing.
await ctx.TriggerTypingAsync();
// lower case teh input.
isEnabled = isEnabled.ToLower();
string[] turnOn = { "on", "true", "1" };
string[] turnOff = { "off", "false", "0" };
//start our response.
DiscordEmbedBuilder embed = StartEmbed("Snapple Toggle");
embed.AddField("Old", (IsEnabled ? "Enabled" : "Disabled"));
// check for file.
if (File.Exists("snapple.json"))
{
// compare desired input against on or off values.
if (turnOn.Contains(isEnabled))
{
IsEnabled = true;
embed.AddField("New", (IsEnabled ? "Enabled" : "Disabled"));
}
else if (turnOff.Contains(isEnabled))
{
IsEnabled = false;
embed.AddField("New", (IsEnabled ? "Enabled" : "Disabled"));
}
else
{
embed.AddField("New", (IsEnabled ? "Enabled" : "Disabled"));
embed.WithFooter(":warning: Invalid command given.");
}
}
else
{
IsEnabled = false;
embed.AddField("New", (IsEnabled ? "Enabled" : "Disabled"));
embed.WithFooter(":warning: snapple.json file is missing, and it can not be enabled.");
}
await ctx.RespondAsync(embed);
}
private DiscordEmbedBuilder StartEmbed(string desc)
{
DiscordEmbedBuilder embed = new DiscordEmbedBuilder
{
Description = desc,
Color = Program.colours[Program.rnd.Next(0, Program.colours.Length)]
};
return embed;
}
private bool Load()
{
bool ret;
if (File.Exists("snapple.json"))
{
string json = File.ReadAllText("snapple.json");
facts = JsonConvert.DeserializeObject<List<string>>(json);
ret = true;
}
else
{
ret = false;
}
IsEnabled = ret;
return ret;
}
}
}