Skip to content

Commit befb971

Browse files
committed
Handle Nostrum ApiError
1 parent cc51e80 commit befb971

5 files changed

Lines changed: 39 additions & 70 deletions

File tree

lib/teiserver/bridge/bridge_server.ex

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ defmodule Teiserver.Bridge.BridgeServer do
44
"""
55

66
alias Nostrum.Api.Channel
7-
alias Nostrum.Api.Message
87
alias Nostrum.Api.Thread
98
alias Phoenix.PubSub
109
alias Teiserver.Account
@@ -57,7 +56,7 @@ defmodule Teiserver.Bridge.BridgeServer do
5756
nil
5857
else
5958
channel_id = user.discord_dm_channel_id || user.discord_dm_channel
60-
Message.create(channel_id, message)
59+
Communication.new_discord_message(channel_id, message)
6160
end
6261
end
6362

@@ -228,14 +227,20 @@ defmodule Teiserver.Bridge.BridgeServer do
228227
channel_id = Config.get_site_config_cache("teiserver.Discord channel #main")
229228

230229
if channel_id do
231-
Message.create(channel_id, "Teiserver startup for node #{Teiserver.node_name()}")
230+
Communication.new_discord_message(
231+
channel_id,
232+
"Teiserver startup for node #{Teiserver.node_name()}"
233+
)
232234
end
233235

234236
# Server
235237
channel_id = Config.get_site_config_cache("teiserver.Discord channel #server-updates")
236238

237239
if channel_id do
238-
Message.create(channel_id, "Teiserver startup for node #{Teiserver.node_name()}")
240+
Communication.new_discord_message(
241+
channel_id,
242+
"Teiserver startup for node #{Teiserver.node_name()}"
243+
)
239244
end
240245
end
241246

@@ -247,7 +252,10 @@ defmodule Teiserver.Bridge.BridgeServer do
247252
channel_id = Config.get_site_config_cache("teiserver.Discord channel #server-updates")
248253

249254
if channel_id do
250-
Message.create(channel_id, "Teiserver shutdown for node #{Teiserver.node_name()}")
255+
Communication.new_discord_message(
256+
channel_id,
257+
"Teiserver shutdown for node #{Teiserver.node_name()}"
258+
)
251259
end
252260
end
253261

@@ -401,7 +409,7 @@ defmodule Teiserver.Bridge.BridgeServer do
401409
message
402410
|> convert_emoticons()
403411

404-
Message.create(channel, "**#{author}**: #{new_message}")
412+
Communication.new_discord_message(channel, "**#{author}**: #{new_message}")
405413
end
406414

407415
defp convert_emoticons(message) do

lib/teiserver/bridge/chat_commands.ex

Lines changed: 2 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
11
defmodule Teiserver.Bridge.ChatCommands do
22
@moduledoc false
3-
alias Nostrum.Api.Channel
4-
alias Nostrum.Api.Message
5-
alias Nostrum.Api.Thread
63
alias Teiserver.Account
74
alias Teiserver.Account.Auth
85
alias Teiserver.Bridge.UnitNames
96
alias Teiserver.CacheUser
107
alias Teiserver.Communication
11-
alias Teiserver.Config
128
alias Teiserver.Data.Types, as: T
139
alias Teiserver.Logging
1410
require Logger
@@ -41,58 +37,6 @@ defmodule Teiserver.Bridge.ChatCommands do
4137
reply(channel_id, "Echoing <@!#{discord_id}> (aka #{user.name}), #{remaining}")
4238
end
4339

44-
def handle_command({_user, _discord_id, message_id}, "gdt", _remaining, channel_id) do
45-
gdt_discussion_channel_id =
46-
Config.get_site_config_cache("teiserver.Discord forum #gdt-discussion")
47-
48-
if gdt_discussion_channel_id do
49-
# Post message to channel
50-
Message.create(
51-
channel_id,
52-
"Thank you for your suggestion, the game design team will be discussing it. Once they have finished discussing it they will vote on it and post an update to this thread."
53-
)
54-
55-
# Delete the message that was posted
56-
Message.delete(channel_id, message_id)
57-
58-
# channel_id = 1071140326644920353
59-
{:ok, channel} = Channel.get(channel_id)
60-
61-
# Create new thread in gdt-discussion
62-
{:ok, thread} =
63-
Thread.create_in_forum(gdt_discussion_channel_id, %{
64-
name: "Discussion for #{channel.name}",
65-
message: %{
66-
content: "Thread to discuss #{channel.name} - <##{channel_id}>"
67-
},
68-
type: 11
69-
})
70-
71-
{:ok, message} =
72-
Message.create(thread.id, %{
73-
content: "Thread to discuss #{channel.name} - <##{channel_id}>"
74-
})
75-
76-
# Pin message
77-
Channel.pin_message(thread.id, message.id)
78-
79-
# Add GDTs to thread
80-
Account.list_users(
81-
search: [
82-
gdt_member: "GDT"
83-
],
84-
select: [:data]
85-
)
86-
|> Enum.map(fn %{data: data} -> data["discord_id"] end)
87-
|> Enum.reject(&(&1 == nil))
88-
|> Enum.each(fn user_discord_id ->
89-
Thread.add_member(thread.id, user_discord_id)
90-
end)
91-
end
92-
93-
:ignore
94-
end
95-
9640
def handle_command({_user, _discord_id, _message_id}, "whatwas", remaining, channel) do
9741
name =
9842
remaining
@@ -178,7 +122,7 @@ defmodule Teiserver.Bridge.ChatCommands do
178122
})
179123

180124
if text_callback.rules["delete_trigger"] == "true" do
181-
Message.delete(channel_id, message_id)
125+
Communication.delete_discord_message(channel_id, message_id)
182126
end
183127

184128
Communication.set_last_triggered_time(text_callback, channel_id)
@@ -209,7 +153,7 @@ defmodule Teiserver.Bridge.ChatCommands do
209153
end
210154

211155
defp reply(channel, msg) do
212-
Message.create(channel, msg)
156+
Communication.new_discord_message(channel, msg)
213157
:ignore
214158
end
215159
end

lib/teiserver/bridge/discord_bridge_bot.ex

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -450,8 +450,19 @@ defmodule Teiserver.Bridge.DiscordBridgeBot do
450450
if msg.content != new_content,
451451
do: Communication.edit_discord_message(channel, msg.id, new_content)
452452

453+
{:error, %{status_code: 404}} ->
454+
Logger.warning("Report message #{report.discord_message_id} was not found")
455+
:error
456+
457+
{:error, %Nostrum.Error.ApiError{}} ->
458+
Logger.warning(
459+
"Report message #{report.discord_message_id} was couldn't be sent due to Nostrum API error"
460+
)
461+
462+
:error
463+
453464
{:error, reason} ->
454-
Logger.warning("Report message #{report.discord_message_id} was not found: #{reason}")
465+
Logger.warning("Error getting report message #{report.discord_message_id} #{reason}")
455466
:error
456467
end
457468
end

lib/teiserver/communication.ex

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -243,22 +243,22 @@ defmodule Teiserver.Communication do
243243
defdelegate get_discord_message(channel_id, message_id), to: DiscordChannelLib
244244

245245
@spec edit_discord_message(non_neg_integer | String.t(), non_neg_integer, String.t()) ::
246-
map | nil | {:error, String.t()}
246+
map | nil | {:error, any()}
247247
defdelegate edit_discord_message(channel_id, message_id, new_message), to: DiscordChannelLib
248248

249249
@spec delete_discord_message(non_neg_integer | String.t(), non_neg_integer) ::
250-
map | nil | {:error, String.t()}
250+
map | nil | {:error, any()}
251251
defdelegate delete_discord_message(channel_id, message_id), to: DiscordChannelLib
252252

253-
@spec send_discord_dm(T.userid(), String.t()) :: map | nil | {:error, String.t()}
253+
@spec send_discord_dm(T.userid(), String.t()) :: map | nil | {:error, any()}
254254
defdelegate send_discord_dm(userid, message), to: DiscordChannelLib
255255

256256
@spec create_discord_reaction(non_neg_integer | String.t(), non_neg_integer, String.t()) ::
257-
map | nil | {:error, String.t()}
257+
map | nil | {:error, any()}
258258
defdelegate create_discord_reaction(channel_id, message_id, emoji), to: DiscordChannelLib
259259

260260
@spec delete_discord_reaction(non_neg_integer | String.t(), non_neg_integer, String.t()) ::
261-
map | nil | {:error, String.t()}
261+
map | nil | {:error, any()}
262262
defdelegate delete_discord_reaction(channel_id, message_id, emoji), to: DiscordChannelLib
263263

264264
@doc """

lib/teiserver_web/live/microblog/admin/post/post_form_component.ex

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ defmodule TeiserverWeb.Microblog.PostFormComponent do
1313

1414
import Teiserver.Helper.ColourHelper, only: [rgba_css: 2]
1515

16+
require Logger
17+
1618
@default_channel_name "Dev updates"
1719

1820
@impl Phoenix.LiveComponent
@@ -525,6 +527,10 @@ defmodule TeiserverWeb.Microblog.PostFormComponent do
525527

526528
{:error, :discord_disabled} ->
527529
:ok
530+
531+
{:error, %Nostrum.Error.ApiError{}} ->
532+
Logger.warning("Updating post #{post.discord_post_id} failed due to Nostrum API error")
533+
:error
528534
end
529535
end
530536

0 commit comments

Comments
 (0)