Javascript 简单的discord机器人,自动添加表情只对图像,但它给我的错误

Javascript 简单的discord机器人,自动添加表情只对图像,但它给我的错误,javascript,python,discord,discord.js,discord.py,Javascript,Python,Discord,Discord.js,Discord.py,我想制作一个discord机器人,它只会自动将表情添加到图像中。我是一名机械工程师。我不是程序员,但我看了一段视频,并应用了所有步骤。但它没有起作用。可能是由于python版本或新的discord更新。这是一个python代码: import discord from discord.ext import commands from discord.ext.commands import Bot import asyncio bot= commands.Bot(comman

我想制作一个discord机器人,它只会自动将表情添加到图像中。我是一名机械工程师。我不是程序员,但我看了一段视频,并应用了所有步骤。但它没有起作用。可能是由于python版本或新的discord更新。这是一个python代码:

import discord
from discord.ext    import commands
from discord.ext.commands   import Bot
import asyncio
 




bot= commands.Bot(command_prefix='#')

 
@bot.event
async def on_ready():
    print ("i am ready bro")
 
 
@bot.event
async def on_message(message):
    if(message.channel.id != "723508588227854378"):
         await bot.add_message(message, ":arakami:837608362719969291")
         await bot.add_message(message,":brakami:837608381283827734")
         await bot.add_message(message,":crakami:837608396659097640")
         await bot.add_message(message,":drakami:837608412337668096")
         await bot.add_message(message,":erakami:837608426821124096")


        
 
 
bot.run("ODM3NjAzMTg1MzIwNzg3OTc4.YIu8wQ.0N2-XZmFhHfxqPR0SVIUW3osK7g")
而youtube视频林是

我发现了自动编码,我阅读了discord机器人指南,我写了这个javascript代码,但它给了我错误

const Discord = require('discord.js');
const client = new Discord.Client();

client.once('ready', () => {
  console.log('ready');
});






client.on('message', msg => {
if (msg.content === 'ping') {
    msg.reply('pong');
}



if (message.attachments.size > 0) {
    if (message.attachments.every(attachIsImage)){
message.react('837608362719969291');
message.react('837608381283827734');
message.react('837608396659097640');
message.react('837608412337668096');
message.react('837608426821124096');



}
}
client.login('ODM4MDMyODkyMDMzODkyMzgz.YI1M8w.DwYwPRRf7Md9qephyOWkHJabY1');
错误是:

SaveError: Function definition error (functions/__main__.js)
Unexpected token (41:0)

Error: Function definition error (functions/__main__.js)
Unexpected token (41:0)
    at FileReader.<anonymous> (https://autocode.com/compile/7d2c40/script.js:1:1026244)
    at FileReader.sentryWrapped (https://browser.sentry-cdn.com/5.16.1/bundle.min.js:2:44808)

The JSON output of the error is below.
{
  "error": {
    "type": "SaveError",
    "message": "Function definition error (functions/__main__.js)\nUnexpected token (41:0)"
  }
}
SaveError:函数定义错误(functions/\uuuu main\uuuu.js)
意外令牌(41:0)
错误:函数定义错误(functions/_main__.js)
意外令牌(41:0)
在FileReader上。(https://autocode.com/compile/7d2c40/script.js:1:1026244)
在FileReader.sentryWrapped(https://browser.sentry-cdn.com/5.16.1/bundle.min.js:2:44808)
错误的JSON输出如下所示。
{
“错误”:{
“类型”:“保存错误”,
“消息”:“函数定义错误(函数/\uuuuu main\uuuuu.js)\n非预期令牌(41:0)”
}
}

我不明白。我哪里出错了?还是因为我对编程一无所知?

让我们看看你的javascript。特别是在
client.on('message',msg=>{

client.on
这是一个。您基本上是说“只有在发生某些事情时才运行此代码”。
client.once(“准备就绪”)
也是一个事件侦听器。
.once
.on
的区别在于
.once
只会在一次时间内运行代码,
.on
会在每次触发事件时运行代码

'message'
是您正在收听的事件。您正在等待客户端说“嘿,我检测到发送了一条新消息”。
'message'
本身无法访问,因为它只是您正在收听的事件的名称

msg
是实际值。这是我们可以用来运行命令、响应、检查的id等。这几乎可以被命名为任何名称,包括
message
。但是您将其定义为
msg
,因此如果您尝试使用
message
,您将得到一个未定义的错误

总之,无论何时发送新消息,代码
客户端.on('message',msg=>{
都会运行,基本上是说“嘿!检测到新消息!您可以使用
msg
访问它。”

有了这个解释,我们可以看看消息事件的实际代码。正如您可能已经注意到的,您可以一直在使用
msg
message
之间切换。您可能希望更改代码中对消息作出反应的部分

    if (msg.attachments.size > 0) {
        if (msg.attachments.every(attachIsImage)) {
            msg.react('837608362719969291');
            msg.react('837608381283827734');
            msg.react('837608396659097640');
            msg.react('837608412337668096');
            msg.react('837608426821124096');
        }
    };
即使这样,这仍然不起作用。除非您在其他地方定义它,
attachIsImage
是未定义的。您可以试试这个

    if (msg.attachments.size > 0) { //Make sure there are attachments at all
        var react = false; //Do we react to the message? Default to false

        msg.attachments.forEach(attachment => { //Check each attachment to see if it's a jpg, png, or jpeg
            if (attachment.url.includes(".jpg") || attachment.url.includes(".png") || attachment.url.includes(".jpeg")) {
                react = true; //It's an image! We want to react to the message
            };
        });

        if (react === true) { //React to the message
            msg.react('837608362719969291');
            msg.react('837608381283827734');
            msg.react('837608396659097640');
            msg.react('837608412337668096');
            msg.react('837608426821124096');
        };
    };
在python代码中,您似乎只希望在消息在特定通道中发送时才做出反应。您也可以在此处轻松地进行此操作!只需将if语句
msg.attachments.size>0
更改为
msg.attachments.size>0&&msg.channel.id==“723508588227854378”
。如果邮件有一个或多个附件且频道id为
723508588227854378
,则这样做只会导致邮件被检查。如果希望它在每个频道中都工作,只需保留if语句


如果你想按照特定的顺序对消息做出反应,那么一系列的
msg.react
函数将无法实现这一点。它有一个关于如何按照特定顺序做出反应的指南。我建议你通读一遍,以了解反应是如何工作的。如果你想更多地了解discord.js bot的开发,除了很好的开始方式。

我不知道什么是
自动编码,但错误是由
意外标记引起的语法错误。
仔细查看你的js,你可能在某个地方漏掉了一个字符。你是想把它改成discord.py还是discord.js?。你的两个代码块不相关,你似乎泄露了你的机器人标记no I h我没有泄露我的机器人令牌。我更改了它,我不知道。昨天我使用python,我的机器人似乎处于活动状态,我希望它能像视频中那样工作,但它没有工作。今天我使用自动编码。如果成功,我将学习下一步。我将搜索免费的discord机器人服务器。如果(message.channel.id!=“723508588227854378”):。我更改了这个代码行。我想让它适用于每个频道。它说只等于我的频道id,但我不等于,我更改了id。这是真的吗?还是需要新的代码集?没有人可以学习程序员专业。这很难。谢谢@APartOfMe。所有系里的学生都作弊了。我的一些朋友把时间花在了我们身上他没有参加考试。