Skip to content

Commit e8ad50c

Browse files
committed
Merge branch 'vnext'
2 parents 6e54733 + defcf8d commit e8ad50c

File tree

2 files changed

+59
-31
lines changed

2 files changed

+59
-31
lines changed

CompatBot/Commands/MessageMenuCommands.cs

+4-31
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ public static async ValueTask Shutup(MessageCommandContext ctx, DiscordMessage m
160160
*/
161161

162162
// only bot mods can use this
163+
/*
163164
[Command("👎 Toggle bad update"), RequiresSmartlistedRole, SlashCommandTypes(DiscordApplicationCommandType.MessageContextMenu)]
164165
public static async ValueTask BadUpdate(MessageCommandContext ctx, DiscordMessage message)
165166
{
@@ -169,37 +170,9 @@ public static async ValueTask BadUpdate(MessageCommandContext ctx, DiscordMessag
169170
await ctx.RespondAsync($"{Config.Reactions.Failure} Invalid update announcement message", ephemeral: true).ConfigureAwait(false);
170171
return;
171172
}
172-
173-
var result = new DiscordEmbedBuilder(embed);
174-
const string warningTitle = "Warning!";
175-
if (embed.Color?.Value == Config.Colors.UpdateStatusGood.Value)
176-
{
177-
result = result.WithColor(Config.Colors.UpdateStatusBad);
178-
result.ClearFields();
179-
var warned = false;
180-
foreach (var f in embed.Fields!)
181-
{
182-
if (!warned && f.Name!.EndsWith("download"))
183-
{
184-
result.AddField(warningTitle, "This build is known to have severe problems, please avoid downloading.");
185-
warned = true;
186-
}
187-
result.AddField(f.Name!, f.Value!, f.Inline);
188-
}
189-
}
190-
else if (embed.Color?.Value == Config.Colors.UpdateStatusBad.Value)
191-
{
192-
result = result.WithColor(Config.Colors.UpdateStatusGood);
193-
result.ClearFields();
194-
foreach (var f in embed.Fields!)
195-
{
196-
if (f.Name is warningTitle)
197-
continue;
198-
199-
result.AddField(f.Name!, f.Value!, f.Inline);
200-
}
201-
}
202-
await message.UpdateOrCreateMessageAsync(message.Channel!, embed: result).ConfigureAwait(false);
173+
174+
await Starbucks.ToggleBadUpdateAnnouncementAsync(message).ConfigureAwait(false);
203175
await ctx.RespondAsync($"{Config.Reactions.Success} Done", ephemeral: true).ConfigureAwait(false);
204176
}
177+
*/
205178
}

CompatBot/EventHandlers/Starbucks.cs

+55
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,8 @@ private static async Task CheckMessageAsync(DiscordClient client, DiscordChannel
117117
await CheckMediaTalkAsync(client, channel, message, emoji).ConfigureAwait(false);
118118
if (emoji == Config.Reactions.ShutUp && !isBacklog)
119119
await ShutupAsync(client, user, message).ConfigureAwait(false);
120+
if (emoji == Config.Reactions.BadUpdate && !isBacklog)
121+
await BadUpdateAsync(client, user, message, emoji).ConfigureAwait(false);
120122
await CheckGameFansAsync(client, channel, message).ConfigureAwait(false);
121123
}
122124
catch (Exception e)
@@ -175,6 +177,59 @@ private static async ValueTask ShutupAsync(DiscordClient client, DiscordUser use
175177
await message.DeleteAsync().ConfigureAwait(false);
176178
}
177179

180+
private static async ValueTask BadUpdateAsync(DiscordClient client, DiscordUser user, DiscordMessage message, DiscordEmoji emoji)
181+
{
182+
if (message.Channel?.Id != Config.BotChannelId)
183+
return;
184+
185+
if (!await user.IsSmartlistedAsync(client, message.Channel.Guild).ConfigureAwait(false))
186+
return;
187+
188+
await ToggleBadUpdateAnnouncementAsync(message).ConfigureAwait(false);
189+
try
190+
{
191+
await message.DeleteReactionAsync(emoji, user).ConfigureAwait(false);
192+
}
193+
catch { }
194+
}
195+
196+
internal static async ValueTask ToggleBadUpdateAnnouncementAsync(DiscordMessage message)
197+
{
198+
if (message.Embeds is not [DiscordEmbed embed])
199+
return;
200+
201+
var result = new DiscordEmbedBuilder(embed);
202+
const string warningTitle = "Warning!";
203+
if (embed.Color?.Value == Config.Colors.UpdateStatusGood.Value)
204+
{
205+
result = result.WithColor(Config.Colors.UpdateStatusBad);
206+
result.ClearFields();
207+
var warned = false;
208+
foreach (var f in embed.Fields!)
209+
{
210+
if (!warned)
211+
{
212+
result.AddField(warningTitle, "This build is known to have severe problems, please avoid downloading.");
213+
warned = true;
214+
}
215+
result.AddField(f.Name!, f.Value!, f.Inline);
216+
}
217+
}
218+
else if (embed.Color?.Value == Config.Colors.UpdateStatusBad.Value)
219+
{
220+
result = result.WithColor(Config.Colors.UpdateStatusGood);
221+
result.ClearFields();
222+
foreach (var f in embed.Fields!)
223+
{
224+
if (f.Name is warningTitle)
225+
continue;
226+
227+
result.AddField(f.Name!, f.Value!, f.Inline);
228+
}
229+
}
230+
await message.UpdateOrCreateMessageAsync(message.Channel!, embed: result).ConfigureAwait(false);
231+
}
232+
178233
private static async ValueTask CheckGameFansAsync(DiscordClient client, DiscordChannel channel, DiscordMessage message)
179234
{
180235
var bot = await client.GetMemberAsync(channel.Guild, client.CurrentUser).ConfigureAwait(false);

0 commit comments

Comments
 (0)