最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - What am I doing wrong (Simple Announcer Bot on Discord) - Stack Overflow

programmeradmin0浏览0评论

Disclaimer; I've never really looked a cold beyond once or twice prior to today. The base Bot I got is from here;
but I end up with this in cmd prompt when I try to run it:

C:\Users\aer\Desktop\discordbotjson>node start
C:\Users\aer\Desktop\discordbotjson\start.js:9
    var channel = client.channels.get("name", "general").id;
                  ^

ReferenceError: client is not defined
at Client.<anonymous> (C:\Users\aer\Desktop\discordbotjson\start.js:9:16)
at emitNone (events.js:67:13)
at Client.emit (events.js:166:7)
at WebSocket.websocket.onmessage (C:\Users\aer\Desktop\discordbotjson\node_modules\discord.js\lib\Client\InternalClient.js:1047:13)
at WebSocket.onMessage (C:\Users\aer\Desktop\discordbotjson\node_modules\ws\lib\WebSocket.js:414:14)
at emitTwo (events.js:87:13)
at WebSocket.emit (events.js:172:7)
at Receiver.ontext (C:\Users\aer\Desktop\discordbotjson\node_modules\ws\lib\WebSocket.js:797:10)
at C:\Users\aer\Desktop\discordbotjson\node_modules\ws\lib\Receiver.js:473:18
at Receiver.applyExtensions (C:\Users\aer\Desktop\discordbotjson\node_modules\ws\lib\Receiver.js:360:5)

This is what the start.json looks like:

var Discord = require("discord.js");
var schedule = require('node-schedule');
var AuthDetails = require("./auth.json");

var bot = new Discord.Client();

bot.on('ready', () => {
// change channel name to name of channel or just set to equal the     channel ID if you already know it.
var channel = client.channels.get("name", "general").id; 

var rule = new schedule.RecurrenceRule(); // Creates new Recurrence Rule
rule.minute = 0; // Must set to 0 or scheduled job will run every minute.
rule.hour = [14, 19, 20]; // Hours are based on your system's time.

var j = schedule.scheduleJob(rule, function() {
    bot.channels.get("id", channel).sendMessage("Testing");
})

/* For different announcements:
rule.hour = 8; // Set different time. Use array like above for multiple hours.

var i = schedule.scheduleJob(rule, function() {
    bot.channels.get("id", channel).sendMessage("Announcement at 8AM");
})

// Repeat for more announcements
*/

console.log("Bot is ready.");
});

//login
bot.login(AuthDetails.email, AuthDetails.password);

Help would be appreciated, thanks.

Disclaimer; I've never really looked a cold beyond once or twice prior to today. The base Bot I got is from here;
but I end up with this in cmd prompt when I try to run it:

C:\Users\aer\Desktop\discordbotjson>node start
C:\Users\aer\Desktop\discordbotjson\start.js:9
    var channel = client.channels.get("name", "general").id;
                  ^

ReferenceError: client is not defined
at Client.<anonymous> (C:\Users\aer\Desktop\discordbotjson\start.js:9:16)
at emitNone (events.js:67:13)
at Client.emit (events.js:166:7)
at WebSocket.websocket.onmessage (C:\Users\aer\Desktop\discordbotjson\node_modules\discord.js\lib\Client\InternalClient.js:1047:13)
at WebSocket.onMessage (C:\Users\aer\Desktop\discordbotjson\node_modules\ws\lib\WebSocket.js:414:14)
at emitTwo (events.js:87:13)
at WebSocket.emit (events.js:172:7)
at Receiver.ontext (C:\Users\aer\Desktop\discordbotjson\node_modules\ws\lib\WebSocket.js:797:10)
at C:\Users\aer\Desktop\discordbotjson\node_modules\ws\lib\Receiver.js:473:18
at Receiver.applyExtensions (C:\Users\aer\Desktop\discordbotjson\node_modules\ws\lib\Receiver.js:360:5)

This is what the start.json looks like:

var Discord = require("discord.js");
var schedule = require('node-schedule');
var AuthDetails = require("./auth.json");

var bot = new Discord.Client();

bot.on('ready', () => {
// change channel name to name of channel or just set to equal the     channel ID if you already know it.
var channel = client.channels.get("name", "general").id; 

var rule = new schedule.RecurrenceRule(); // Creates new Recurrence Rule
rule.minute = 0; // Must set to 0 or scheduled job will run every minute.
rule.hour = [14, 19, 20]; // Hours are based on your system's time.

var j = schedule.scheduleJob(rule, function() {
    bot.channels.get("id", channel).sendMessage("Testing");
})

/* For different announcements:
rule.hour = 8; // Set different time. Use array like above for multiple hours.

var i = schedule.scheduleJob(rule, function() {
    bot.channels.get("id", channel).sendMessage("Announcement at 8AM");
})

// Repeat for more announcements
*/

console.log("Bot is ready.");
});

//login
bot.login(AuthDetails.email, AuthDetails.password);

Help would be appreciated, thanks.

Share Improve this question edited Mar 3, 2016 at 13:22 Sevle 3,1192 gold badges21 silver badges31 bronze badges asked Dec 17, 2015 at 21:13 Nonia BuisnessNonia Buisness 11 gold badge1 silver badge1 bronze badge 3
  • 6 Try changing client.channels.get to bot.channels.get – Ctx Commented Dec 17, 2015 at 21:17
  • 1 You have no element named "client". Did you mean "bot", perhaps? – Prune Commented Dec 17, 2015 at 21:18
  • This var Discord = require("discord.js"); most probably should be: var Discord = require("discord"); – Alexandr Lazarev Commented Dec 17, 2015 at 21:58
Add a ment  | 

5 Answers 5

Reset to default 3

Some code examples you might find use var client = new Discord.Client();, some others use var bot = new Discord.Client();. They mean the same but use a different name, and since you're using the latter, you must replace all instances of the variable name client with bot.

var Discord = require("discord.js");
var schedule = require('node-schedule');
var AuthDetails = require("./auth.json");
var bot = new Discord.Client();

bot.on('ready', () => {
    var channel = bot.channels.get("name", "general").id;

    var rule = new schedule.RecurrenceRule();
    rule.minute = 0;
    rule.hour = [14, 19, 20];

    var j = schedule.scheduleJob(rule, function() {
        bot.channels.get("id", channel).sendMessage("Testing");
    })

    console.log("Bot is ready.");
});

bot.login(AuthDetails.email, AuthDetails.password);

Bot is your instance of a Discord Client it's normal that client.channels.() doesn't return anything since client is not defined anywhere.

Just replace client with your instance of a client which is here "bot"

var channel = bot.channels.get("name", "general").id; 

This code should work; var channel = bot.channels.find("name", "general"); channel.sendMessage("Hello Owner Just Restarted Me!");

Replace var Discord = require("discord.js"); with var bot = require("discord.js");

Hope this helps!

发布评论

评论列表(0)

  1. 暂无评论