MCPcopy Index your code
hub / github.com/NdoleStudio/httpsms / sendMessage

Method sendMessage

api/pkg/services/discord_service.go:256–292  ·  view source on GitHub ↗
(ctx context.Context, event cloudevents.Event, discord *entities.Discord)

Source from the content-addressed store, hash-verified

254}
255
256func (service *DiscordService) sendMessage(ctx context.Context, event cloudevents.Event, discord *entities.Discord) {
257 ctx, span, ctxLogger := service.tracer.StartWithLogger(ctx, service.logger)
258 defer span.End()
259
260 payload := new(events.MessagePhoneReceivedPayload)
261 if err := event.DataAs(payload); err != nil {
262 ctxLogger.Error(stacktrace.Propagate(err, fmt.Sprintf("cannot unmarshal event [%s] with ID [%s] into [%T]", event.Type(), event.ID(), payload)))
263 return
264 }
265
266 request := service.createDiscordMessage(ctxLogger, payload)
267 message, response, err := service.client.Channel.CreateMessage(ctx, discord.IncomingChannelID, request)
268 if err != nil {
269 msg := fmt.Sprintf("cannot send [%s] event to discord channel [%s] for user [%s]", event.Type(), discord.IncomingChannelID, discord.UserID)
270 ctxLogger.Warn(service.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg)))
271
272 eventPayload := &events.DiscordSendFailedPayload{
273 DiscordID: discord.ID,
274 UserID: discord.UserID,
275 MessageID: payload.MessageID,
276 Owner: payload.Owner,
277 EventType: event.Type(),
278 ErrorMessage: err.Error(),
279 DiscordChannelID: discord.IncomingChannelID,
280 }
281
282 if response != nil {
283 eventPayload.HTTPResponseStatusCode = &response.HTTPResponse.StatusCode
284 eventPayload.ErrorMessage = string(*response.Body)
285 }
286
287 service.handleDiscordMessageFailed(ctx, event.Source(), eventPayload)
288 return
289 }
290
291 ctxLogger.Info(fmt.Sprintf("sent discord message [%s] to channel [%s] for [%s] event with ID [%s]", message["id"].(string), discord.IncomingChannelID, event.Type(), event.ID()))
292}
293
294func (service *DiscordService) createDiscordMessage(ctxLogger telemetry.Logger, payload *events.MessagePhoneReceivedPayload) fiber.Map {
295 return fiber.Map{

Callers 1

HandleMessageReceivedMethod · 0.95

Calls 8

createDiscordMessageMethod · 0.95
CreateMessageMethod · 0.80
StartWithLoggerMethod · 0.65
ErrorMethod · 0.65
WarnMethod · 0.65
WrapErrorSpanMethod · 0.65
InfoMethod · 0.65

Tested by

no test coverage detected