我正在創建一個'say'命令,允許我通過bot直接向特定的(或任何可能的)頻道發送消息。對於初學者和一般測試目的,我的目標是能夠使用標準的if(commandIs("command", message)
直接在我的測試服務器上發送一個通道,最終演變到服務器上的所有通道。使用Discord.js發送跨渠道消息 - 'undefined'錯誤
通過我的研究,我在無意中發現的:
var channel = client.servers.get("name", "My Server").defaultChannel; client.sendMessage(channel, "Hello");
代碼,這正是我希望做的下榻地點,因爲我可以爲實際信道ID換出.get("name", "My server")
,而是通過有發言權般的命令做這個設置var
在我的代碼信道類別,它不支持.sendMessage()
我當前的命令代碼如下所示:
if(commandIs("speak", message)){
var chat = client.channels.get(18numberID);
if(args.length === 1){
message.channel.sendMessage('You did not say anything. Usage: `a~speak [message]`')
} else {
chat.sendMessage(args.join(" ").substring(8));
- 但是這會導致undefined
錯誤.sendMessage()
,我認爲它會。我試過message.chat.sendMessage()
以及其他所有可能的變體,即使只有兩行代碼在on.ready()
處進行測試,但這仍然給我帶來了同樣的錯誤。我一直在尋找一種圍繞Channel
類的方法,一旦找到了ID並創建了TextChannel
和GuildChannel
擴展名,但我很確定考慮到所有代碼都有更簡單的方法(即使這裏有幾個示例)不包含所有額外的信息。我覺得我正在查看某些內容,或者可能使代碼更加複雜,但我不確定。
任何想法或幫助,將不勝感激。
編輯︰看來我是對的,我看了幾個關鍵點,特別是channelID沒有引號周圍是一個字符串。單單試了命令,一切都很順利;調整了主代碼,這一切都奏效了。
不知道爲什麼它不會返回一個TextChannel ..你確定它是一個TextChannel嗎?也許有一個(安全?)限制在客戶端或什麼的。也許你應該試着詢問discord.js服務器的Discord。js官方#222078108977594368 –
我一直對自己很好奇。我已經嘗試過所有可以用作初學者的編碼漏洞,但似乎沒有任何工作可做。我會確保聯繫官方的Discord.js服務器,看看他們對此有何看法。 – Esirza
什麼是您的djs版本? – Aister