#discord.js
#discord.js
Вопрос:
Итак, я пытаюсь сделать простую команду were (например) Я мог бы сказать «Мне скучно», и он сказал бы «Привет, скучно, я бот!».
Вот что у меня есть на данный момент, мне интересно, как я могу сделать это возможным.
client.on('message', message => {
if(message.content.toLowerCase().includes('bot')) {
message.channel.send('https://media.giphy.com/media/tczJoRU7XwBS8/giphy.gif');
}
if(message.content.toLowerCase().includes(`i'm`)) {
message.channel.send(`Hello ${args}, I'm a bot!`)
Ответ №1:
Есть несколько способов, с помощью которых вы могли бы это сделать String.includes()
, но было бы намного проще добиться этого с String.match()
помощью (который работает аналогично, но на самом деле может возвращать то, что было найдено) и Regex . Регулярное выражение используется для сопоставления шаблонов в тексте, и вы абсолютно точно ищете общий шаблон здесь: «Я {что-то}».
Вот один из способов сделать это с помощью match()
и regex , если вы хотите включить пробелы:
if(message.content.match(/(i'm )(. )/i) amp;amp; !message.author.bot) {
message.channel.send(`Hello ${message.content.match(/(i'm )(. )/i)[2]}, I'm a bot!`)
}
Вот способ сделать это без включения пробелов, что, вероятно, то, что вы хотите:
if(message.content.match(/(i'm )(w )/i) amp;amp; !message.author.bot) {
message.channel.send(`Hello ${message.content.match(/(i'm )(w )/i)[2]}, I'm a bot!`)
}
Я объясню регулярное выражение внутри match()
: круглые скобки указывают конкретные группы для сопоставления, .
указывают на любой отдельный символ,
указывают на один или несколько указанных символов, а i
флаг означает, что совпадение не зависит от регистра (создание toLowerCase()
больше не требуется). Вы можете перейти на сайты, подобные этому, для получения дополнительной информации и самостоятельно разобраться с регулярными выражениями.
В первом примере, если вы говорите «Я человек», бот отвечает «Привет, человек, я бот!» (использует все аргументы, начиная со второго). Во втором примере, если вы говорите «Я человек», бот отвечает «Привет, а, я бот!» (использует только второй аргумент).
Комментарии:
1. По какой-то причине он рассылает спам
Hello I'm , I'm a bot!
, когда я говорюI'm sad
2. @Kc5f, теперь я исправил эту проблему в своем ответе. Ответ теперь работает (протестирован и работает). Он больше не рассылает спам, и теперь он говорит
Hello sad, I'm a bot!
, как задумано.