Multivit4min / TS3-NodeJS-Library

TeamSpeak 3 Server Query Library supports SSH and RAW Query
https://multivit4min.github.io/TS3-NodeJS-Library/
MIT License
150 stars 19 forks source link

Imports with require #68

Closed Jan3kk closed 5 years ago

Jan3kk commented 5 years ago

Okay so I am creating my own bot and to maximize its performance and/or comfort of use I wanted to make core.js that should handle the connection and require modules like register, createChannel etc. But the problem is I don't have any idea how to do it with your library. Here's my code: core.js

const TeamSpeak3 = require("ts3-nodejs-library")
const register = require("home/node_modules/bot/register.js")

//nowe polaczenie
const ts3 = new TeamSpeak3({
  host: "127.0.0.1",
  queryport: 10011,
  serverport: 9987,
  username: "serveradmin",
  password: "",
  nickname: "[ JANbot ]"
})

ts3.on("ready", async () => {
    Promise.all([
        ts3.registerEvent("server"),
        ts3.registerEvent("channel", 0),
    ]).then(() => {
        console.log("[ JANbot ] Nasluchuje eventow: server, channel.")
    }).catch(e => {
        console.log("Blad:", e.message)
    })
})

register.sluchajRejestruj(ts3)

ts3.on("error", e => console.log("-Blad:", e.message))
ts3.on("close", e => console.log("Zamknieto polaczenie:", e))

and the register.js:

function sluchajRejestruj(ts3){
ts3.on("clientmoved", event =>{
    if(event.channel.cid==4){
        var boolean = event.client.servergroups.includes(11)
        if(boolean==false){
            event.client.message("Pomyślnie Cię zarejestrowałem :)")
            event.client.addGroups(11)
            event.client.kickFromChannel("Zarejestrowano użytnika " + event.client.nickname)
        }else{
            event.client.message("Już jesteś zarejestrowany :d")
            event.client.kickFromChannel("Użytnik " + event.client.nickname + " już jest zarejestrowany")
        }
    }
})
}

Error I'm getting:

/home/node_modules/bot/core.js:25
register.sluchajRejestruj(ts3)
         ^

TypeError: register.sluchajRejestruj is not a function
    at Object.<anonymous> (/home/node_modules/bot/core.js:25:10)
    at Module._compile (internal/modules/cjs/loader.js:776:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
    at Module.load (internal/modules/cjs/loader.js:643:32)
    at Function.Module._load (internal/modules/cjs/loader.js:556:12)
    at Function.Module.runMain (internal/modules/cjs/loader.js:839:10)
    at internal/main/run_main_module.js:17:11

If you could, create a example that would help me with this problem or just explain me a bit how to implement it properly :)

Jan3kk commented 5 years ago

After hours of struggling with it, I came up with this:

core.js

const TeamSpeak3 = require("ts3-nodejs-library")
var config = require("./config.js")

//nowe polaczenie
const ts3 = new TeamSpeak3({
  host: "127.0.0.1",
  queryport: 10011,
  serverport: 9987,
  username: "serveradmin",
  password: "",
  nickname: " [ JANbot ] "
})

ts3.on("ready", async () => {
    Promise.all([
        ts3.registerEvent("server"),
        ts3.registerEvent("channel", 0),
        ts3.registerEvent("textserver"),
        ts3.registerEvent("textchannel"),
        ts3.registerEvent("textprivate")
    ]).then(() => {
        console.log("[ JANbot ] Nasluchuje eventow: server, channel (0), textserver, textchannel, textprivate")
    }).catch(e => {
        console.log("Core: Promise: Blad:", e.message)
    })
})

var register = require ("./register/register.js")();
if(config.registerEnabled=true){
        ts3.on("clientmoved", event =>{
                registerUser(event,event.client)
        })
}

ts3.on("error", e => console.log("Core: Blad: ", e.message))
ts3.on("close", e => console.log("Zamknieto polaczenie: ", e))

config.js

{
        var registerEnabled = true;
}

When I'm switching to any channel (i guess that "if(config.registeredEnabled...) is triggered every move) there shows up an error: config is not defined

Why ? :/

Multivit4min commented 5 years ago

First of all config.registerEnabled=true is an assignment expression not a comparative expression and second your config.js does not export anything.

As this is not an issue with the Library itself please refer to Stackoverflow or similar Boards with Questions about how Node/JavaScript works