예제 #1
0
 public Task InitializeAsync(IContextV1 context)
 {
     _context  = context;
     _settings = JsonConvert.DeserializeObject <ChatLinkerPluginSettings>(
         File.ReadAllText("chatlinker.plugin.config.json"));
     return(Task.CompletedTask);
 }
예제 #2
0
        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
                            );
                    }
                }
            };
        }