fix(discord): use GuildInteractionUser.Permissions instead of REST guild lookup #100

Closed
Toutsu wants to merge 0 commits from fix/discord-guildinteractionuser-permissions into main
Owner

Summary

Исправлена ошибка 404 (Not Found). Unknown Guild. при вызове /newsession и /reschedule в Discord.

Changes

  • src/GmRelay.DiscordBot/Features/Sessions/DiscordNewSessionCommand.cs — вместо REST-вызовов GetGuildAsync/GetGuildUserAsync используем GuildInteractionUser.Permissions из payload interaction (Discord уже резолвит права пользователя в канале/гильдии и отправляет их в member.permissions). Сохранён best-effort вызов GetGuildAsync только для получения OwnerId с тихим проглатыванием 404.
  • src/GmRelay.DiscordBot/Features/Sessions/DiscordRescheduleCommand.cs — аналогичное изменение.
  • Синхронизированы версии: Directory.Build.props, NavMenu.razor, compose.yaml, deploy.yml, DiscordProjectStructureTests.cs → 3.0.7

Test plan

  • dotnet build src/GmRelay.DiscordBot/GmRelay.DiscordBot.csproj --no-restore проходит
  • DiscordProjectStructureTests все 8 тестов проходят
  • Проверить /newsession и /reschedule на живом сервере Discord после деплоя

Workflow

  • CI passes
  • Code review approved
  • Deployed
  • Release published
## Summary Исправлена ошибка `404 (Not Found). Unknown Guild.` при вызове `/newsession` и `/reschedule` в Discord. ## Changes - `src/GmRelay.DiscordBot/Features/Sessions/DiscordNewSessionCommand.cs` — вместо REST-вызовов `GetGuildAsync`/`GetGuildUserAsync` используем `GuildInteractionUser.Permissions` из payload interaction (Discord уже резолвит права пользователя в канале/гильдии и отправляет их в `member.permissions`). Сохранён best-effort вызов `GetGuildAsync` только для получения `OwnerId` с тихим проглатыванием 404. - `src/GmRelay.DiscordBot/Features/Sessions/DiscordRescheduleCommand.cs` — аналогичное изменение. - Синхронизированы версии: `Directory.Build.props`, `NavMenu.razor`, `compose.yaml`, `deploy.yml`, `DiscordProjectStructureTests.cs` → 3.0.7 ## Test plan - [x] `dotnet build src/GmRelay.DiscordBot/GmRelay.DiscordBot.csproj --no-restore` проходит - [x] `DiscordProjectStructureTests` все 8 тестов проходят - [ ] Проверить `/newsession` и `/reschedule` на живом сервере Discord после деплоя ## Workflow - [x] CI passes - [ ] Code review approved - [ ] Deployed - [ ] Release published
Toutsu added 1 commit 2026-05-26 10:46:06 +03:00
fix(discord): use GuildInteractionUser.Permissions instead of REST guild lookup
PR Checks / test-and-build (pull_request) Successful in 11m25s
2942da0c35
Replace REST GetGuildAsync/GetGuildUserAsync calls with authoritative
member.Permissions from the slash-command interaction payload. Discord
already resolves channel/guild permissions in the interaction JSON, so
we no longer need to fetch the guild via REST (which returns 404 when
the bot is not a REST member of the guild, e.g. user-installed apps).

Keep a best-effort GetGuildAsync call only to obtain OwnerId for the
permission checker fallback, swallowing 404 silently.

Bump version → 3.0.7

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Toutsu closed this pull request 2026-05-26 16:06:29 +03:00
Some checks are pending
PR Checks / test-and-build (pull_request) Successful in 11m25s

Pull request closed

Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Toutsu/GmRelayBot#100