Как я могу отделить имя пользователя и идентификатор от команды? - PullRequest
1 голос
/ 21 сентября 2019

Я сделал код, используя DankMemer Youtube Imgen API.Когда я набираю "youtube hello", он отображает:

https://media.discordapp.net/attachments/571059573352431658/624855379347636244/unknown.png

Но когда я отмечаю кого-то, он отображает текст вместе с идентификатором:

https://media.discordapp.net/attachments/571059573352431658/624855734852648960/unknown.png

Есть ли способ отделить имя пользователя от текста?

    let target = message.mentions.users.first() || message.author;
    let profilepic = target.avatarURL;
    let sentence =  args.join(" ");
    let url = ` https://dankmemer.services/api/youtube?avatar1=${profilepic}&username1=${target.username}&text=${sentence}`;

    message.channel.startTyping();

    snekfetch.get(url, {
        headers: {
            "Authorization": token
        }
    }).then(async res => {
        await message.channel.send({
           files: [{
               attachment: res.body,
               name: `${target.tag}-youtube.jpg`
           }]
        }).then(() => message.channel.stopTyping());
    }).catch(err => console.error(err));

};

Ответы [ 2 ]

0 голосов
/ 21 сентября 2019
let sentence =  args.join(" ");

вы присоединились к аргументам, которые, я думаю, также включают упомянутого пользователя.Единственное, что вам нужно сделать, это удалить упоминание.Если вы хотите удалить только первое упоминание, сделайте это -

if (!target === message.author) {
    let toremove = `{@${target.id}}`;
    sentence = sentence.replace(toremove, "");
}

Добавьте этот код после этой строки -

let sentence =  args.join(" ");
0 голосов
/ 21 сентября 2019

Вы можете заменить все упоминания в содержании сообщения пробелами , используя регулярное выражение , например:

let messageContentWithoutMentions = message.content.replace(new RegExp("<@\d+>","gm"),"")

Если вы хотите удалить что-то еще, просто используйте string.replace функция.

...