forked from adam/discord-bot-shtik
70 lines
2.5 KiB
C#
70 lines
2.5 KiB
C#
namespace vassago
|
|
{
|
|
using franz;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using vassago;
|
|
using vassago.Models;
|
|
using vassago.TwitchInterface;
|
|
using vassago.ProtocolInterfaces.DiscordInterface;
|
|
using System.Runtime.CompilerServices;
|
|
using Newtonsoft.Json;
|
|
|
|
internal class ConsoleService : BackgroundService
|
|
{
|
|
public ConsoleService(IConfiguration aspConfig)
|
|
{
|
|
Shared.DBConnectionString = aspConfig["DBConnectionString"];
|
|
}
|
|
|
|
List<string> DiscordTokens;
|
|
List<TwitchConfig> TwitchConfigs;
|
|
|
|
protected override async Task ExecuteAsync(CancellationToken cancellationToken)
|
|
{
|
|
var initTasks = new List<Task>();
|
|
var dbc = new ChattingContext();
|
|
await dbc.Database.MigrateAsync(cancellationToken);
|
|
|
|
var confEntity = dbc.Configurations.FirstOrDefault() ?? new Configuration();
|
|
if (dbc.Configurations.Count() == 0)
|
|
{
|
|
dbc.Configurations.Add(confEntity);
|
|
dbc.SaveChanges();
|
|
}
|
|
dbConfig(ref confEntity);
|
|
|
|
if (DiscordTokens?.Any() ?? false)
|
|
foreach (var dt in DiscordTokens)
|
|
{
|
|
var d = new DiscordInterface();
|
|
initTasks.Add(d.Init(dt));
|
|
Shared.ProtocolList.Add(d);
|
|
}
|
|
|
|
if (TwitchConfigs?.Any() ?? false)
|
|
foreach (var tc in TwitchConfigs)
|
|
{
|
|
var t = new TwitchInterface.TwitchInterface();
|
|
initTasks.Add(t.Init(tc));
|
|
Shared.ProtocolList.Add(t);
|
|
}
|
|
|
|
Task.WaitAll(initTasks.ToArray(), cancellationToken);
|
|
}
|
|
private void dbConfig(ref vassago.Models.Configuration confEntity)
|
|
{
|
|
Shared.SetupSlashCommands = confEntity.SetupDiscordSlashCommands;
|
|
Shared.API_URL = new Uri(confEntity.reportedApiUrl);
|
|
DiscordTokens = confEntity.DiscordTokens;
|
|
TwitchConfigs = new List<TwitchConfig>();
|
|
if(confEntity.TwitchConfigs != null) foreach (var twitchConfString in confEntity.TwitchConfigs)
|
|
{
|
|
TwitchConfigs.Add(JsonConvert.DeserializeObject<TwitchConfig>(twitchConfString));
|
|
}
|
|
Conversion.Converter.Load(confEntity.ExchangePairsLocation);
|
|
Telefranz.Configure(confEntity.KafkaName, confEntity.KafkaBootstrap);
|
|
vassago.Behavior.Webhook.SetupWebhooks(confEntity.Webhooks);
|
|
}
|
|
}
|
|
}
|