Secret soulscreams, because I'm bored

This commit is contained in:
Ske 2020-12-20 11:52:35 +01:00
parent df243d4220
commit 96ba511026
2 changed files with 33 additions and 3 deletions

View File

@ -364,6 +364,8 @@ namespace PluralKit.Bot
await ctx.Execute<MemberEdit>(MemberPrivacy, m => m.Privacy(ctx, target, PrivacyLevel.Private));
else if (ctx.Match("public", "shown", "show"))
await ctx.Execute<MemberEdit>(MemberPrivacy, m => m.Privacy(ctx, target, PrivacyLevel.Public));
else if (ctx.Match("soulscream"))
await ctx.Execute<Member>(MemberInfo, m => m.Soulscream(ctx, target));
else if (!ctx.HasNext()) // Bare command
await ctx.Execute<Member>(MemberInfo, m => m.ViewMember(ctx, target));
else

View File

@ -1,9 +1,14 @@
using System.Linq;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Net;
using System.Net.Http;
using System.Web;
using Dapper;
using DSharpPlus.Entities;
using Newtonsoft.Json.Linq;
using PluralKit.Core;
namespace PluralKit.Bot
@ -13,12 +18,14 @@ namespace PluralKit.Bot
private readonly IDatabase _db;
private readonly ModelRepository _repo;
private readonly EmbedService _embeds;
private readonly HttpClient _client;
public Member(EmbedService embeds, IDatabase db, ModelRepository repo)
public Member(EmbedService embeds, IDatabase db, ModelRepository repo, HttpClient client)
{
_embeds = embeds;
_db = db;
_repo = repo;
_client = client;
}
public async Task NewMember(Context ctx) {
@ -66,5 +73,26 @@ namespace PluralKit.Bot
var system = await _db.Execute(c => _repo.GetSystem(c, target.System));
await ctx.Reply(embed: await _embeds.CreateMemberEmbed(system, target, ctx.Guild, ctx.LookupContextFor(system)));
}
public async Task Soulscream(Context ctx, PKMember target)
{
// this is for a meme, please don't take this code seriously. :)
var name = target.NameFor(ctx.LookupContextFor(target));
var encoded = HttpUtility.UrlEncode(name);
var resp = await _client.GetAsync($"https://onomancer.sibr.dev/api/generateStats2?name={encoded}");
if (resp.StatusCode != HttpStatusCode.OK)
// lol
return;
var data = JObject.Parse(await resp.Content.ReadAsStringAsync());
var scream = data["soulscream"]!.Value<string>();
var eb = new DiscordEmbedBuilder()
.WithColor(DiscordColor.Red)
.WithDescription($"[*{scream}*](https://onomancer.sibr.dev/reflect?name={encoded})");
await ctx.Reply(embed: eb.Build());
}
}
}