53 lines
2.0 KiB
C#
53 lines
2.0 KiB
C#
using Bot.modules;
|
|
using DSharpPlus;
|
|
using DSharpPlus.EventArgs;
|
|
using IniParser;
|
|
|
|
namespace Bot
|
|
{
|
|
internal static class RobertBot
|
|
{
|
|
private static async Task Main(string[] args)
|
|
{
|
|
// Config setup
|
|
var botToken = Environment.GetEnvironmentVariable("BOT_TOKEN");
|
|
if (botToken == null)
|
|
{
|
|
await Console.Error.WriteLineAsync("Missing BOT_TOKEN environment variable");
|
|
Environment.Exit(1);
|
|
}
|
|
var openAiKey = Environment.GetEnvironmentVariable("OPENAI_API_KEY");
|
|
var configParser = new FileIniDataParser();
|
|
var config = configParser.ReadFile(Path.Combine(AppContext.BaseDirectory, "config.ini"));
|
|
|
|
// Module setup
|
|
var messageHandlers = new List<Func<DiscordClient, MessageCreatedEventArgs, Task>>();
|
|
|
|
// TFC Setup
|
|
if (config["TextFreeChannels"]["active"] == "true")
|
|
{
|
|
var textFreeChannelList = config["TextFreeChannels"]["channels"].Split(",").ToList();
|
|
var textFreeChannels = new TextFreeChannels(textFreeChannelList, openAiKey);
|
|
messageHandlers.Add(textFreeChannels.MessageCreatedHandler);
|
|
}
|
|
|
|
// Politico Setup
|
|
if (config["Politico"]["active"] == "true")
|
|
{
|
|
var politicoChannelList = config["Politico"]["channels"].Split(",").ToList();
|
|
var politico = new Politico(politicoChannelList, openAiKey);
|
|
messageHandlers.Add(politico.MessageCreatedHandler);
|
|
}
|
|
|
|
// Bot client setup
|
|
var builder = DiscordClientBuilder.CreateDefault(botToken, DiscordIntents.AllUnprivileged | DiscordIntents.MessageContents);
|
|
builder.ConfigureEventHandlers(b =>
|
|
{
|
|
foreach (var h in messageHandlers) {b.HandleMessageCreated(h);}
|
|
});
|
|
|
|
await builder.ConnectAsync();
|
|
await Task.Delay(-1);
|
|
}
|
|
}
|
|
} |