Direct Messages
Warning
Prerequisites:
Any code from the prerequisites can be omitted to make it easier to read. If you do want the complete code, look at the repository examples.
Send
| GDScript |
|---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 | extends Node
var application_id: int = 123456789012345678
var target_id: int = 987654323109876543
var client := DiscordClient.new()
func _ready() -> void:
client.set_application_id(application_id)
client.set_status_changed_callback(_on_status_changed)
func _process(_delta: float) -> void:
Discord.run_callbacks()
func _on_status_changed(status: DiscordClientStatus.Enum, _error: DiscordClientError.Enum, _error_detail: int) -> void:
var enum_str: String = Discord.enum_to_string(status, DiscordClientStatus.id)
print("Status changed to %s" % enum_str)
if status == DiscordClientStatus.READY:
var message := "ready to queue?"
client.send_user_message(target_id, message, _on_message_sent)
func _on_message_sent(result: DiscordClientResult, message_id: int) -> void:
if result.successful():
print("✅ Message sent successfully (message id: %s)" % message_id)
else:
print("❌ Failed to send message: %s" % result.error())
|
Supress Double Notification
Tell Discord client that you are already showing the chat so it shouldn't notificate the user about new messages (don't forget to turn off when not showing chat anymore):
| client.set_showing_chat(true)
|
Receive
| GDScript |
|---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 | extends Node
var application_id: int = 123456789012345678
var client := DiscordClient.new()
func _ready() -> void:
client.set_application_id(application_id)
client.set_message_created_callback(_on_message_created)
func _process(_delta: float) -> void:
Discord.run_callbacks()
func _on_message_created(result: DiscordClientResult, message_id: int) -> void:
var message = client.get_message_handle(message_id)
if message is DiscordMessageHandle:
print("New message from %s: %s" % [message.author_id(), message.content()])
|
Watch for changes so you can update the game messages in your game too:
| GDScript |
|---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 | extends Node
var application_id: int = 123456789012345678
var client := DiscordClient.new()
func _ready() -> void:
client.set_application_id(application_id)
client.set_message_created_callback(_on_message_created)
client.set_message_updated_callback(_on_message_updated)
func _process(_delta: float) -> void:
Discord.run_callbacks()
func _on_message_created(result: DiscordClientResult, message_id: int) -> void:
var message = client.get_message_handle(message_id)
if message is DiscordMessageHandle:
print("New message from %s: %s" % [message.author_id(), message.content()])
func _on_message_updated(message_id: int) -> void:
var message = client.get_message_handle(message_id)
if message is DiscordMessageHandle:
print("Message from %s updated: %s" % [message.author_id(), message.content()])
|
Remember to also watch for messages that are deleted:
| GDScript |
|---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 | extends Node
var application_id: int = 123456789012345678
var client := DiscordClient.new()
func _ready() -> void:
client.set_application_id(application_id)
client.set_message_created_callback(_on_message_created)
client.set_message_updated_callback(_on_message_updated)
client.set_message_deleted_callback(_on_message_deleted)
func _process(_delta: float) -> void:
Discord.run_callbacks()
func _on_message_created(result: DiscordClientResult, message_id: int) -> void:
var message = client.get_message_handle(message_id)
if message is DiscordMessageHandle:
print("New message from %s: %s" % [message.author_id(), message.content()])
func _on_message_updated(message_id: int) -> void:
var message = client.get_message_handle(message_id)
if message is DiscordMessageHandle:
print("Message from %s updated: %s" % [message.author_id(), message.content()])
func _on_message_deleted(message_id: int, channel_id: int) -> void:
var message = client.get_message_handle(message_id)
if message is DiscordMessageHandle:
print("Message from %s in %s deleted" % [message.author_id(), channel_id])
|
References