yank from tiktok

This commit is contained in:
Adam R. Grey 2021-08-29 00:21:09 -04:00
parent b32d7398c8
commit da0c9eb48a
3 changed files with 46 additions and 14 deletions

View File

@ -40,14 +40,15 @@ namespace silverworker_discord
await _client.StartAsync(); await _client.StartAsync();
_client.Ready += () => Task.Run(() =>{ _client.Ready += () => Task.Run(() =>
{
Console.WriteLine("Bot is connected! going to sign up for message received and user joined in client ready"); Console.WriteLine("Bot is connected! going to sign up for message received and user joined in client ready");
botChatterChannel = _client.GetChannel(ulong.Parse(config["botChatterChannel"])) as ISocketMessageChannel; botChatterChannel = _client.GetChannel(ulong.Parse(config["botChatterChannel"])) as ISocketMessageChannel;
announcementChannel = _client.GetChannel(ulong.Parse(config["announcementChannel"])) as ISocketMessageChannel; announcementChannel = _client.GetChannel(ulong.Parse(config["announcementChannel"])) as ISocketMessageChannel;
_client.MessageReceived += MessageReceived; _client.MessageReceived += MessageReceived;
_client.UserJoined += UserJoined; _client.UserJoined += UserJoined;
}); });
// Block this task until the program is closed. // Block this task until the program is closed.
await Task.Delay(-1); await Task.Delay(-1);
} }
@ -60,21 +61,21 @@ namespace silverworker_discord
Console.WriteLine($"{message.Channel}, {message.Content} (message id: {message.Id})"); Console.WriteLine($"{message.Channel}, {message.Content} (message id: {message.Id})");
if(message.Author.IsWebhook) if (message.Author.IsWebhook)
{ {
if(message.Author.Username == "greasemonkey reward watcher") if (message.Author.Username == "greasemonkey reward watcher")
{ {
Console.WriteLine("yep"); Console.WriteLine("yep");
var redemptionData = message.Content.Split("\n")[1].Substring("data: ".Length); var redemptionData = message.Content.Split("\n")[1].Substring("data: ".Length);
if(message.Content.StartsWith("type: reward-request")) if (message.Content.StartsWith("type: reward-request"))
{ {
var components = redemptionData.Split("•"); var components = redemptionData.Split("•");
Console.WriteLine($"{components.Length} components:"); Console.WriteLine($"{components.Length} components:");
var rewardName = components[0].Trim(); var rewardName = components[0].Trim();
var redeemer = components[1].Trim(); var redeemer = components[1].Trim();
var textData = ""; var textData = "";
if(components[1].Contains(":")) if (components[1].Contains(":"))
{ {
redeemer = components[1].Substring(0, components[1].IndexOf(":")).Trim(); redeemer = components[1].Substring(0, components[1].IndexOf(":")).Trim();
textData = components[1].Substring(components[1].IndexOf(":")).Trim(); textData = components[1].Substring(components[1].IndexOf(":")).Trim();
@ -82,7 +83,8 @@ namespace silverworker_discord
Console.WriteLine($"user: {redeemer} redeems {rewardName}, text data? {textData}"); Console.WriteLine($"user: {redeemer} redeems {rewardName}, text data? {textData}");
var redemptionSerialized = Encoding.ASCII.GetBytes( var redemptionSerialized = Encoding.ASCII.GetBytes(
JsonConvert.SerializeObject(new { JsonConvert.SerializeObject(new
{
redeemer = redeemer, redeemer = redeemer,
rewardName = rewardName, rewardName = rewardName,
textData = textData textData = textData
@ -91,7 +93,7 @@ namespace silverworker_discord
wr.Method = "POST"; wr.Method = "POST";
wr.ContentType = "application/json"; wr.ContentType = "application/json";
wr.ContentLength = redemptionSerialized.Length; wr.ContentLength = redemptionSerialized.Length;
using(var postStream = wr.GetRequestStream()) using (var postStream = wr.GetRequestStream())
{ {
postStream.Write(redemptionSerialized); postStream.Write(redemptionSerialized);
} }
@ -101,10 +103,9 @@ namespace silverworker_discord
} }
else else
{ {
if (message.Channel.Id == botChatterChannel.Id) if (message.Channel.Id == botChatterChannel.Id)
{ {
if(message.Attachments?.Count > 0) if (message.Attachments?.Count > 0)
{ {
Console.WriteLine(message.Attachments.Count); Console.WriteLine(message.Attachments.Count);
foreach (var att in message.Attachments) foreach (var att in message.Attachments)
@ -114,13 +115,42 @@ namespace silverworker_discord
} }
} }
} }
else
{
//any channel, from a user
var wordLikes = message.Content.Split(' ', StringSplitOptions.TrimEntries);
Console.WriteLine($"{wordLikes.Count()} word-like things");
var links = wordLikes?.Where(wl => Uri.IsWellFormedUriString(wl, UriKind.Absolute)).Select(wl => new Uri(wl));
if (links != null && links.Count() > 0)
{
foreach (var link in links)
{
if (link.Host == "vm.tiktok.com")
{
detiktokify(link, message.Channel);
}
}
}
}
} }
} }
private async void detiktokify(Uri link, ISocketMessageChannel channel)
{
var ytdl = new YoutubeDLSharp.YoutubeDL();
ytdl.YoutubeDLPath = config["ytdl"];
ytdl.FFmpegPath = "ffmpeg";
ytdl.OutputFolder = "./";
var res = await ytdl.RunVideoDownload(link.ToString());
string path = res.Data;
await channel.SendFileAsync(path);
File.Delete(path);
}
private Task UserJoined(SocketGuildUser arg) private Task UserJoined(SocketGuildUser arg)
{ {
Console.WriteLine($"user joined: {arg.Nickname}. Guid: {arg.Guild.Id}. Channel: {arg.Guild.DefaultChannel}"); Console.WriteLine($"user joined: {arg.Nickname}. Guid: {arg.Guild.Id}. Channel: {arg.Guild.DefaultChannel}");
var abbreviatedNickname = arg.Nickname; var abbreviatedNickname = arg.Nickname;
if(arg.Nickname.Length > 3){ if (arg.Nickname.Length > 3)
{
abbreviatedNickname = arg.Nickname.Substring(0, arg.Nickname.Length / 3); abbreviatedNickname = arg.Nickname.Substring(0, arg.Nickname.Length / 3);
} }
Console.WriteLine($"imma call him {abbreviatedNickname}"); Console.WriteLine($"imma call him {abbreviatedNickname}");

View File

@ -1,5 +1,6 @@
{ {
"token": "59 chars", "token": "59 chars",
"botChatterChannel": 0, "botChatterChannel": 0,
"announcementChannel": 0 "announcementChannel": 0,
"ytdl": "youtube-dl"
} }

View File

@ -11,6 +11,7 @@
<PackageReference Include="Microsoft.Extensions.Configuration" Version="5.0.0" /> <PackageReference Include="Microsoft.Extensions.Configuration" Version="5.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="5.0.0" /> <PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="5.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="5.0.0" /> <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="5.0.0" />
<PackageReference Include="youtubedlsharp" Version="0.3.1" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>