@Prorokius

Как сделать чтобы бот отвечал только на определенного человека?

Пытаюсь сделать, чтобы бот отвечал только на сообщения от определенного человека
Знаю, что можно сделать это по айди, но чет не выкупаю как

var prefix = "^";

client.on("message", msg => {
if(!msg.guild) return;
if(!msg.content.startsWith("^")) return;
const args = msg.content.slice(prefix.length).trim().split(/ +/g);
const command = args.shift().toLowerCase();
if(command === "print"){
let text = args.join(" ");
msg.delete().catch(err => console.log(err));
msg.channel.send(text);
}
});

Вставлял
if(!msg.author.id === "мой_айди") return;
Вместо
if(!msg.guild) return;

Но бот плевал на то, что я ему ставлю ограничение и принтит от всех подряд
Может кто помочь, как реализовать это правильно?

P.S. К такому жизнь меня еще не готовила, но возможно как-то сделать, чтобы я писал это сообщение ему в лс, а он на сервер в определенный канал?
  • Вопрос задан
  • 860 просмотров
Пригласить эксперта
Ответы на вопрос 3
Sanasol
@Sanasol Куратор тега JavaScript
нельзя просто так взять и загуглить ошибку
Вот так посмотрите что делает ваш код, со скобочками наглядно в каком порядке выполняются операции:
if((!msg.author.id) === "мой_айди") return;

т.е. у вас не проверка, а фиг знает что, поэтому бот и плевал на неё.

https://learn.javascript.ru/ifelse
Ответ написан
@goblin3564
На мой взгляд, я не понял, что делает ваш код, вам нужно чтобы бот проверял все сообщения, и отвечал только если напишет определенный пользователь, или же, вам нужно чтобы при вводе команды бот отвечал пользователю?
Если вариант первый то это делается так:
client.on("message", msg => {
  if(msg.author.bot) return;
  if(msg.author.id === "ваш_id") { msg.author.send("Ваш ответ пользователю."); }
 }
});

Если вариант второй, то так:
client.on("message", msg => {
  if(msg.author.bot) return;
  if(msg.content === "ваша команда/сообщение")
  { if(msg.author.id === "ваш_id") { msg.author.send("Ваш ответ пользователю."); } }
 }
});

Если же у вам нужно что-то другое, опишите вашу проблему подробнее.
Ответ написан
Комментировать
erge
@erge
Примус починяю
Prorokius, Sanasol намекает на неверный код, должно быть условие НЕравентсва, а не условие равенства на .... !msg.author.id
что это вообще? подозреваю что результатом !msg.author.id будет всегда false (если есть КАКОЙ Либо Id)
т.е. сравниваются false и значение справа
а false уж точно не равен (А условие именно равентсва) любому значению в правой части условия, потому if и не отрабатывает!

см. Операторы сравнения
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы