Как ограничить бот, чтобы дать ответ команды бота в личном сообщении? - PullRequest
0 голосов
/ 27 октября 2018

Я создал бота, но когда кто-то DM с командой в личном сообщении дает ответы в личном сообщении.

Я хотел бы, чтобы бот отвечал на команду только тогда, когда пользователь находится на сервере и втекстовый канал.

Любая помощь?

Ответы [ 2 ]

0 голосов
/ 03 ноября 2018

Мне приходилось использовать эту проверку во многих местах, поэтому я расширил ModuleBase и поместил всю свою проверку в нее.:

public bool IsFromGuildChat()
{
     var IsFromGuildChat = Context.Guild.Id != 0;
     if (IsFromGuildChat == false)
         throw new RequiresDiscordGuildException(); //custom exception 

      return IsFromGuildChat;
}

Тогда в верхней части моей команды:

[Command("test")]
[Alias("t")]
public async Task Test()
{
    //validation
    if (!IsFromGuildChat())
        return;

    await ReplyAsync("This is only called from Guild Chat!");
}
0 голосов
/ 29 октября 2018

Таким образом, вам нужно добавить строку, похожую на эту, к вашему CommandHandler, вот как вы можете блокировать любые сообщения, не относящиеся к гильдии.

 if (message.Channel is SocketDMChannel) return;

Это вернется из метода, как только канал станет SocketDMChannel.

...