Top.Mail.Ru
Ответы

JavaScript программирование бота Майн Крафт

Дайте пожалуйста код для бота в Майн Крафт JavaScript , обработчик текста , например если игрок сделал ошибку в тексте то бот всё равно понял что он хотел написать, то есть бот должен найти в коде похожие слова и так ответить на вопрос игрока.

По дате
По рейтингу
Аватар пользователя
Профи

Вот пример кода бота Minecraft, который может понимать сообщения с орфографическими ошибками и реагировать соответствующим образом:
Вот пример кода бота Minecraft, который может понимать сообщения с орфографическими ошибками и реагировать соответствующим образом:

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
 // Список слов, которые понимает бот
const vocabulary = ['hello', 'help', 'time', 'weather'];  
 
// Функция, проверяющая, похоже ли слово на слово из словаря
function isSimilar(word) { 
  for(let vocab of vocabulary) { 
    if(levenshteinDistance(word, vocab) < 2) { 
      return true; 
    } 
  } 
  return false; 
} 
 
// Алгоритм расстояния Левенштейна
function levenshteinDistance(a, b) { 
  //... 
} 
 
// Бот прослушивает сообщения чата
bot.on('message', (player, message) => { 
 
// Разделяем сообщение на слова
  const words = message.split(' ');   
 
// Проверяем каждое слово на сходство
  let similarWord; 
  for(let word of words) { 
    if(isSimilar(word)) { 
      similarWord = word; 
      break; 
    } 
  } 
 
// Если похожее слово найдено, ответить соответствующим образом
  if(similarWord) { 
    switch(similarWord) { 
      case 'hello': 
        player.message('Привет!'); 
        break; 
      case 'help':  
        player.message('Введите команду для помощи'); 
        break; 
      // и т.д.
    } 
  } else { 
    player.message('Я не понял');  
  } 
 
}); 

При этом используется алгоритм расстояния Левенштейна, чтобы проверить, похожи ли слова, отличаясь на 1-2 символа. Если совпадение найдено, он отвечает на основе словарного слова.

Аватар пользователя
Ученик

А можешь сделать так что бы бот искал похожие сообщения уже в готовых сообщениях, по типу message бот будет искать тут похожие сообщения

Аватар пользователя
Профи
123456789101112131415161718192021222324252627282930313233
 // Группы сообщений
const messageGroups = {
  greetings: [
    'hello',
    'hi',
    'hey'
  ],
  help: [
    'help',   
    'assist',
    'guide'
  ]
}
// Бот слушает сообщения чата  
bot.on('message', (player, message) => {
// Получаем тип сообщения  
  let messageType;
  for(let type in messageGroups) {   
    if(messageGroups[type].some(word => message.includes(word))) {
      messageType = type;
      break;
    }
  }
// Если тип сообщения найден, получаем случайный ответ  
  if(messageType) {   
    const responses = messageGroups[messageType];   
    const response = responses[Math.floor(Math.random() * responses.length)];
    player.message(response);   
// Совпадения не найдено
  } else {
    player.message('I don\'t understand');
  }
}); 
Аватар пользователя
Профи

Ключевые изменения:

  1. Определите группы сообщений как объекты с ключами как типами и значениями как массивами похожих сообщений.

  2. Проверяйте входное сообщение в каждой группе, чтобы узнать тип сообщения.

  3. Если тип найден, вернуть случайный ответ из этой группы.

  4. В противном случае ответьте, что он не понял



Видео по теме