Итак, я написал бот. Это работает. Я не использую существующую библиотеку, я собрал свою собственную, используя документацию API.
Мне удалось DM самостоятельно:
// representative code - real thing uses higher-level functions like Discord::createDM()
// but for "MCVE" reasons this is just to show the API calls being made.
$dm = Discord::api("POST", "/users/@me/channels",
["recipient_id"=>Discord::KNOWN_USERS['Niet']]
);
Discord::api("POST", "/channels/".$dm->id."/messages",
["content"=>"Hello World!"]
);
Работает просто отлично. Тем не менее, я попытался сделать это DM кем-то еще, и получил 403 Запрещенную ошибку с сообщением «50007 Не удается отправить сообщения этому пользователю»
Я хотел бы, чтобы бот мог управлять членами гильдии DM, либо в ответ на команды (вместо того, чтобы иметь отдельный #bot-commands
канал) или в ответ на автоматическую модерацию (вместо публичного их вызова, что отрицательно сказывается на удалении оскорбительных сообщений)
Однако, если бот не может отправлять эти сообщения, тогда это небольшая проблема.
Каковы возможные причины невозможности отправки сообщений определенному пользователю, и как я могу решить их?
Или я должен просто сдаться и просто использовать #bot-messages
канал?
Скорее всего, эти пользователи решили не получать DM. Вы можете разрешить только друзьям отправлять их вам, а затем подписывать / исключать пользователей на определенных серверах, чтобы иметь возможность отправлять вам DM (я думаю, нажмите на имя сервера, затем Конфиденциальность).
С этим мало что можно сделать, кроме как попросить их разрешить DM с вашего сервера.
Других решений пока нет …