Skip to content

Commit eb53e17

Browse files
Tosoks67Elektryk-Andrzej
authored andcommitted
Discord messages in threads support
1 parent 57c2b17 commit eb53e17

File tree

4 files changed

+36
-8
lines changed

4 files changed

+36
-8
lines changed

Code/MethodSystem/Methods/DiscordMethods/DeleteDiscordMessageMethod.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,22 +26,29 @@ public class DeleteDiscordMessageMethod : SynchronousMethod, ICanError
2626
new TextArgument("webhook url"),
2727
new TextArgument("message id")
2828
{
29-
Description = "You can get it by right-clicking on a message and clicking \"Copy message ID\""
29+
Description = "You can get it by right-clicking on a message and clicking \"Copy message ID\" " +
30+
$"or with the {GetFriendlyName(typeof(SendDiscordMessageAndWaitMethod))} method"
31+
},
32+
new TextArgument("thread id")
33+
{
34+
DefaultValue = new(string.Empty, "no thread")
3035
}
3136
];
3237

3338
public override void Execute()
3439
{
3540
var webhookUrl = Args.GetText("webhook url");
3641
var messageId = Args.GetText("message id");
42+
var threadId = Args.GetText("thread id");
3743

3844
if (messageId.IsEmpty())
3945
throw new ScriptRuntimeError(this, ErrorReasons[^2]);
4046

4147
if (!webhookUrl.StartsWith("https://discord.com/api/webhooks/"))
4248
throw new ScriptRuntimeError(this, ErrorReasons.Last());
4349

44-
var messageURL = webhookUrl + "/messages/" + messageId;
50+
var messageURL = webhookUrl + "/messages/" + messageId +
51+
(!threadId.IsEmpty() ? $"?thread_id={threadId}" : "");
4552

4653
Timing.RunCoroutine(HTTPPostMethod.RequestSend(this, messageURL, null, "DELETE"));
4754
}

Code/MethodSystem/Methods/DiscordMethods/EditDiscordMessageMethod.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,22 +28,28 @@ public class EditDiscordMessageMethod : SynchronousMethod, ICanError
2828
{
2929
Description = "You can get it by right-clicking on a message and clicking \"Copy message ID\""
3030
},
31-
new ReferenceArgument<DiscordMessageMethod.DMessage>("message object")
31+
new ReferenceArgument<DiscordMessageMethod.DMessage>("message object"),
32+
new TextArgument("thread id")
33+
{
34+
DefaultValue = new(string.Empty, "no thread")
35+
}
3236
];
3337

3438
public override void Execute()
3539
{
3640
var webhookUrl = Args.GetText("webhook url");
3741
var messageId = Args.GetText("message id");
3842
var messageObject = Args.GetReference<DiscordMessageMethod.DMessage>("message object");
43+
var threadId = Args.GetText("thread id");
3944

4045
if (messageId.IsEmpty())
4146
throw new ScriptRuntimeError(this, ErrorReasons[^2]);
4247

4348
if (!webhookUrl.StartsWith("https://discord.com/api/webhooks/"))
4449
throw new ScriptRuntimeError(this, ErrorReasons.Last());
4550

46-
var messageURL = webhookUrl + "/messages/" + messageId;
51+
var messageURL = webhookUrl + "/messages/" + messageId +
52+
(!threadId.IsEmpty() ? $"?thread_id={threadId}" : "");
4753

4854
Timing.RunCoroutine(HTTPPostMethod.RequestSend(this, messageURL, messageObject, "PATCH"));
4955
}

Code/MethodSystem/Methods/DiscordMethods/SendDiscordMessageAndWaitMethod.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,25 @@ public class SendDiscordMessageAndWaitMethod : YieldingReturningMethod<TextValue
2727
public override Argument[] ExpectedArguments { get; } =
2828
[
2929
new TextArgument("webhook url"),
30-
new ReferenceArgument<DiscordMessageMethod.DMessage>("message object")
30+
new ReferenceArgument<DiscordMessageMethod.DMessage>("message object"),
31+
new TextArgument("thread id")
32+
{
33+
DefaultValue = new(string.Empty, "no thread")
34+
}
3135
];
3236

3337
public override IEnumerator<float> Execute()
3438
{
3539
var webhookUrl = Args.GetText("webhook url");
3640
var messageObject = Args.GetReference<DiscordMessageMethod.DMessage>("message object");
41+
var threadId = Args.GetText("thread id");
3742

3843
if (!webhookUrl.StartsWith("https://discord.com/api/webhooks/"))
3944
throw new ScriptRuntimeError(this, ErrorReasons.Last());
4045

41-
using UnityWebRequest request = new UnityWebRequest(webhookUrl + "?wait=true", "POST");
46+
using UnityWebRequest request = new UnityWebRequest(
47+
webhookUrl + "?wait=true" + (!threadId.IsEmpty() ? $"&thread_id={threadId}" : ""),
48+
"POST");
4249
byte[] bodyRaw = System.Text.Encoding.UTF8.GetBytes(messageObject.ToString());
4350
request.uploadHandler = new UploadHandlerRaw(bodyRaw);
4451
request.downloadHandler = new DownloadHandlerBuffer();

Code/MethodSystem/Methods/DiscordMethods/SendDiscordMessageMethod.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,25 @@ public class SendDiscordMessageMethod : SynchronousMethod, ICanError
2323
public override Argument[] ExpectedArguments { get; } =
2424
[
2525
new TextArgument("webhook url"),
26-
new ReferenceArgument<DiscordMessageMethod.DMessage>("message object")
26+
new ReferenceArgument<DiscordMessageMethod.DMessage>("message object"),
27+
new TextArgument("thread id")
28+
{
29+
DefaultValue = new(string.Empty, "no thread")
30+
}
2731
];
2832

2933
public override void Execute()
3034
{
3135
var webhookUrl = Args.GetText("webhook url");
3236
var messageObject = Args.GetReference<DiscordMessageMethod.DMessage>("message object");
37+
var threadId = Args.GetText("thread id");
3338

3439
if (!webhookUrl.StartsWith("https://discord.com/api/webhooks/"))
3540
throw new ScriptRuntimeError(this, ErrorReasons.Last());
3641

37-
Timing.RunCoroutine(HTTPPostMethod.RequestSend(this, webhookUrl, messageObject));
42+
Timing.RunCoroutine(HTTPPostMethod.RequestSend(
43+
this,
44+
webhookUrl + (!threadId.IsEmpty() ? $"?thread_id={threadId}" : ""),
45+
messageObject));
3846
}
3947
}

0 commit comments

Comments
 (0)