Top.Mail.Ru
Ответы

Не работает код. Js + mineflayer кто разбирается помогите пж

Значит, ошибка такова:
node:assert:408
throw err;
^

AssertionError [ERR_ASSERTION]: plugin needs to be a function
at EventEmitter.loadPlugin (C:\Users\1\node_modules\mineflayer\lib\plugin_loader.js:16:12)
at Object.<anonymous> (C:\Users\1\Downloads\ppnpc\TooSmartBot.js:19:5)
at Module._compile (node:internal/modules/cjs/loader:1358:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1416:10)
at Module.load (node:internal/modules/cjs/loader:1208:32)
at Module._load (node:internal/modules/cjs/loader:1024:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:174:12)
at node:internal/main/run_main_module:28:49 {
generatedMessage: false,
code: 'ERR_ASSERTION',
actual: false,
expected: true,
operator: '=='
}

Node.js v20.13.1

Process finished with exit code 1

Код с гитхаба, менял только айпи, порт:
const mineflayer = require('mineflayer')
const pvp = require('mineflayer-pvp').plugin
const { pathfinder, Movements, goals} = require('mineflayer-pathfinder')
const GoalFollow = goals.GoalFollow
const armorManager = require('mineflayer-armor-manager')
const autoeat = require('mineflayer-auto-eat')
const collectBlock = require('mineflayer-collectblock').plugin

const bot = mineflayer.createBot({
host: "Localhost",
port: 60729,
username: "Bot"
})

bot.loadPlugin(pvp)
bot.loadPlugin(armorManager)
bot.loadPlugin(pathfinder)
bot.loadPlugin(autoeat)
bot.loadPlugin(collectBlock)

Это начало, все не лезет, гитхаб:
https://github.com/TS-Dudes/SmartMineBot

Дополнен

Айпи, порт в:
const bot = mineflayer.createBot({
host: "Localhost",
port: 60729,
username: "Bot"
})

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

Ошибка ERR_ASSERTION: plugin needs to be a function указывает на то, что вы пытаетесь загрузить плагин, который не является функцией. Скорее всего, это связано с неправильным импортом или использованием плагина.

Убедитесь, что все зависимости установлены корректно:

12
 npm install mineflayer mineflayer-pvp mineflayer-pathfinder mineflayer-armor-manager mineflayer-auto-eat mineflayer-collectblock 
 

Проверьте, что все плагины импортируются и используются корректно.

12345678910111213141516171819202122232425
 const mineflayer = require('mineflayer') 
const pvp = require('mineflayer-pvp').plugin 
const { pathfinder, Movements, goals } = require('mineflayer-pathfinder') 
const GoalFollow = goals.GoalFollow 
const armorManager = require('mineflayer-armor-manager').plugin // добавлен .plugin 
const autoeat = require('mineflayer-auto-eat').plugin // добавлен .plugin 
const collectBlock = require('mineflayer-collectblock').plugin 
 
const bot = mineflayer.createBot({ 
  host: "localhost", 
  port: 60729, 
  username: "Bot" 
}) 
 
bot.loadPlugin(pvp) 
bot.loadPlugin(armorManager) 
bot.loadPlugin(pathfinder) 
bot.loadPlugin(autoeat) 
bot.loadPlugin(collectBlock) 
 
bot.once('spawn', () => { 
  console.log('Bot has spawned!') 
}) 
 
// Далее добавьте свою логику бота  

Я тебе не даю весь код а только суть для данного вопроса чтобы ты понимал что у тебя не так в коде

Аватар пользователя
Мастер

Тебе впадлу лишние буквы написать и просишь тебе решение написать?

Аватар пользователя
Профи

Ошибку, которую вы получили, связана с тем, что плагин должен быть функцией, как указано в сообщении об ошибке "AssertionError [ERR_ASSERTION]: plugin needs to be a function". Разберем ваш код:



const mineflayer = require('mineflayer')
const pvp = require('mineflayer-pvp').plugin
const { pathfinder, Movements, goals } = require('mineflayer-pathfinder')
const GoalFollow = goals.GoalFollow
const armorManager = require('mineflayer-armor-manager')
const autoeat = require('mineflayer-auto-eat')
const collectBlock = require('mineflayer-collectblock').plugin

const bot = mineflayer.createBot({
host: "localhost",
port: 60729,
username: "Bot"
})

bot.loadPlugin(pvp)
bot.loadPlugin(armorManager)
bot.loadPlugin(pathfinder)
bot.loadPlugin(autoeat)
bot.loadPlugin(collectBlock)
Проблема заключается в том, что при загрузке плагинов вы передаете результат вызова plugin (например, const pvp = require('mineflayer-pvp').plugin), а не сами функции.

Для решения этой проблемы вам нужно загружать сами функции плагинов, а не результат их вызова. Например, в случае с mineflayer-pvp:

j
const pvp = require('mineflayer-pvp')
Также убедитесь, что все остальные плагины также загружаются как функции, а не результаты вызова. После исправлений ваш код может выглядеть примерно так:


const mineflayer = require('mineflayer')
const pvp = require('mineflayer-pvp')
const { pathfinder, Movements, goals } = require('mineflayer-pathfinder')
const GoalFollow = goals.GoalFollow
const armorManager = require('mineflayer-armor-manager')
const autoeat = require('mineflayer-auto-eat')
const collectBlock = require('mineflayer-collectblock')

const bot = mineflayer.createBot({
host: "LocalHost",
port: 60729,
username: "Bot"
})

bot.loadPlugin(pvp)
bot.loadPlugin(armorManager)
bot.loadPlugin(pathfinder)
bot.loadPlugin(autoeat)
bot.loadPlugin(collectBlock)
Попробуйте внести изменения в код с учетом вышеперечисленного и запустить его снова. Следите за ошибками и уточните результаты после исправлений. Если у вас возникнут дополнительные вопросы или потребуется дальнейшая помощь, не стесняйтесь обращаться.