Мне нужна помощь в создании сообщения о разногласиях с ботом при вводе команды

В настоящее время я пытаюсь создать дискодорадного бота и нахожусь в тупике от команды, которую я пытаюсь заставить это сделать. Предполагается, что команда является секретным сообщением DM, отправленным ботом. Мне было интересно, есть ли еще способ сделать это? команда должна выглядеть так:

/ dm @ PLAYER # 000 [message_goes_here]

Пожалуйста, помогите!

2 ответа

Решение

Давайте сделаем это шаг за шагом:

Если упоминается @Player#0000, вы можете получить Player # 0000 User Использование объекта msg.mentions[0]. Теперь отправим этому пользователю сообщение:

Во-первых, вам нужно отделить сообщение от команды: Использование msg.toString() вы сможете получить сообщение с упоминанием, превращенным в <@ID>, что также будет содержать пробелы в именах пользователей. Теперь разделите сообщение, используя msg.toString().split(' '), shift() это дважды, join(' ') это и у вас будет сообщение.

С помощью User.send() Вы сможете отправить сообщение этому пользователю.

Вот как будет выглядеть окончательный результат:

bot.on('message', message => {
    if (message.content.startsWith('/dm ') && message.mentions.users.size) {
        var v=message.toString().split(' ').shift().shift().join(' ') // Takes the DM content from the message
        var member=message.mentions.users[0] // The mentioned user
        member.send(v) // send that user a DM
    }
})

Обратите внимание, что этот пример на самом деле не покрывает ошибки (в случае, если сообщение не отправляется и т. Д.)

Я не уверен, что вы можете изменить message.content.startsWith() с чем-то, что я забыл, или вы могли бы просто сделать это в другом месте, потому что, как и бот-дискорд, такой как dyno или mee6, я не думаю, что они используют точный код, я симпатичный уверен, что им нужно создать идентификатор для бота, который будет рассылать его, как акцентный человек, убивающий кого-то, так что да, это мое предположение.

Другие вопросы по тегам