public Task InitializeAsync(IContextV1 context) { _context = context; _settings = JsonConvert.DeserializeObject <ChatLinkerPluginSettings>( File.ReadAllText("chatlinker.plugin.config.json")); return(Task.CompletedTask); }
public async Task InitializeAsync(IContextV1 context) { _context = context; _context.Logger.Info("Starting plugin {Plugin}", Name); _context.Logger.Debug("Loading configuration {ConfigFile}", ConfigFile); // let jsonconvert throw if this fails --> app will unload plugin _settings = JsonConvert.DeserializeObject <DiscordPluginSettings>(File.ReadAllText(ConfigFile)); _client = new DiscordSocketClient(); await _client.LoginAsync(TokenType.Bot, _settings.Token); await _client.StartAsync(); _client.Ready += () => { _context.Logger.Info("Plugin {Plugin} has been initialized", Name); _ready = true; foreach (var clientGuild in _client.Guilds) { _context.Logger.Info("Guild {GuildName} ({GuildId}) contains {ChannelCount} channels", clientGuild.Name, clientGuild.Id, clientGuild.Channels.Count); foreach (var clientGuildChannel in clientGuild.Channels) { _context.Logger.Info("Channel {ChannelName} ({ChannelId})", clientGuildChannel.Name, clientGuildChannel.Id); } } return(Task.CompletedTask); }; _client.MessageReceived += async(message) => { foreach (var link in _settings.ChannelServerLinks.Where(l => l.ChannelId == message.Channel.Id)) { var server = _context.Servers.FirstOrDefault(s => s.Name == link.Server); if (server != null) { await server.SendMessageAsync( $"{message.Author.Username}@{message.Channel.Name}", message.Content ); } } }; }