private Task Client_GuildAvailable(GuildCreateEventArgs e) { // Log the name of the guild that just became available e.Client.DebugLogger.LogMessage(LogLevel.Info, "DiscordWikiBot", $"Guild available: {e.Guild.Name}", DateTime.Now); // Load custom values if needed string guild = e.Guild.Id.ToString(); Linking.Init(guild); Locale.LoadCustomLocale(Config.GetLang(guild)); if (Config.GetTWChannel() != null && Config.GetTWLang() != null) { TranslateWiki.Init(Config.GetTWChannel(guild), Config.GetTWLang(guild)); } if (Config.GetDomain() != "") { EventStreams.Subscribe(Config.GetDomain(guild)); } return(Task.FromResult(0)); }
public async Task SetDomain(CommandContext ctx, [Description("configuring-help-domain-value"), RemainingText] string value) { string prevDomain = Config.GetDomain(ctx.Guild.Id.ToString()); string lang = Config.GetLang(ctx.Guild.Id.ToString()); // List of Wikimedia projects string[] wmfProjects = { ".wikipedia.org", ".wiktionary.org", ".wikibooks.org", ".wikinews.org", ".wikiquote.org", ".wikisource.org", ".wikiversity.org", ".wikivoyage.org", ".wikimedia.org", "www.mediawiki.org", "www.wikidata.org" }; // Ensure that we are in private channel if (ctx.Channel.Name != "moderators") { await ctx.RespondAsync(Locale.GetMessage("denied", lang)); return; } ; await ctx.TriggerTypingAsync(); // Check for required parameters if (value.ToString() == "") { await ctx.RespondAsync(Locale.GetMessage("configuring-required-value", lang, "help guildDomain", Config.GetValue("prefix"))); return; } // Check if matches Wikimedia project bool isWmfProject = false; if (value != "-" && wmfProjects.Any(value.Contains)) { isWmfProject = true; } if (!isWmfProject) { await ctx.RespondAsync(Locale.GetMessage("configuring-badvalue-domain", lang, "`" + string.Join("`, `", wmfProjects) + "`")); return; } // Check for return to default if (value == "-") { value = Config.GetDomain(); } // Do action and respond int succeeds = Config.SetOverride(ctx.Guild.Id.ToString(), "domain", value); if (succeeds == Config.RESULT_CHANGE) { EventStreams.Subscribe(value); await ctx.RespondAsync(Locale.GetMessage("configuring-changed-domain", lang, value)); } if (succeeds == Config.RESULT_RESET) { // Unsubscribe if this domain is not being used elsewhere if (value != prevDomain && !Config.IsValuePresent("domain", prevDomain)) { EventStreams.Unsubscribe(value); } } await RespondOnErrors(succeeds, ctx, lang); }