-
released this
2026-05-25 18:21:32 +03:00 | 147 commits to main since this release🔧 Patch 3.0.5 — Исправление "This command can only be used in a guild" в Discord
Discord slash-команды (
/listsessions,/newsession,/reschedule) и кнопки сессий возвращали ошибку "This command can only be used in a guild", даже когда вызывались внутри канала сервера.Root cause:
Context.Guildв NetCord берется из gateway client cache (cache.Guilds.GetValueOrDefault(guildId)), а не из JSON payload интеракции. После рестарта бота guild может еще не быть в кэше, иContext.Guild= null.Fix: Используем
Context.Interaction.GuildIdиз payload + REST APIGetGuildAsync/GetGuildUserAsync.🧩 Что вошло в релиз
DiscordListSessionsCommand.cs—Context.Interaction.GuildIdвместоContext.Guild.IdDiscordNewSessionCommand.cs— REST запросы для guild/member,GetResolvedPermissionsнаRestGuild+GuildUserDiscordRescheduleCommand.cs— аналогичноDiscordSessionInteractionModule.cs— фиксCreateInputдля кнопок (тот же баг)- Добавлен null guard в
GetResolvedPermissions - Синхронизированы версии → 3.0.5
🗡 Что это даёт
- Discord slash-команды и кнопки работают корректно сразу после рестарта бота, независимо от состояния gateway cache.
📦 Версия и деплой
Downloads