void IDataObject.OnDataLoad() { if (_bttvChannelEmoteSources == null) { _bttvChannelEmoteSources = new List <BttvChannelEmoteSource>(); } Task.Run(async() => { for (int i = 0; i < _bttvChannelEmoteSources.Count; i++) { _bttvChannelEmoteSources[i] = await BttvChannelEmoteSource.Create(_client, _bttvChannelEmoteSources[i].Channel); } }); }
void IModule.Install(ModuleManager manager) { _client = manager.Client; _http = _client.GetService <HttpService>(); Task.Run(async() => { foreach (EmoteSourceBase source in _emoteSources) { try { await source.DownloadData(_http); } catch (Exception ex) { Logger.FormattedWrite( GetType().Name, $"Failed loading emotes for {source.GetType().Name}. Exception: {ex}"); } } GC.Collect(); }); manager.CreateDynCommands("bttv", PermissionLevel.User, group => { group.CreateCommand("") .Parameter("channel") .Description("Add a BTTV channel to the emote sources.") .Do(async e => { string channel = e.GetArg("channel"); if (_bttvChannelEmoteSources.FirstOrDefault(s => s.Channel == channel) != null) { await e.Channel.SendMessage("This channel is already in the emote source list."); return; } BttvChannelEmoteSource source = await BttvChannelEmoteSource.Create(_client, channel); if (source == null) { await e.Channel.SafeSendMessage("Failed getting emote data."); return; } _bttvChannelEmoteSources.Add(source); await e.Channel.SafeSendMessage($"Added channel {channel} to the emote source."); }); }); manager.CreateDynCommands("emote", PermissionLevel.User, group => { group.CreateCommand("") .Parameter("emote", ParameterType.Unparsed) .Do(async e => { string emotePath = await ResolveEmoteDir(e.GetArg("emote")); if (!File.Exists(emotePath)) { return; // todo : lower case == upper case in this case. KAPPA = Kappa } await e.Channel.SafeSendFile(emotePath); }); }); }