【问题标题】:Keep getting syntax error around async def on_ready(): whilst making discord bot不断收到围绕 async def on_ready() 的语法错误:同时制作不和谐机器人
【发布时间】:2018-08-01 12:21:03
【问题描述】:

我已经学习了一点 Python,并决定利用我所学的知识构建一个 Discord 机器人来测试我的能力。我已经编写了所有代码,对我来说看起来不错(我敢肯定,这并不意味着什么),但是每次尝试运行它时都会收到语法错误代码。所以,我把它缩小到最低限度,它仍然不起作用。我查看了很多问题,发现这通常发生在您没有使用 Python 的更新版本时,但我已经三次检查过我确实在运行 Python 3.6.4。

这是我所拥有的:

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

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

@bot.event
async def on_ready():
    print ("Bot Online!")
    print (bot.user.name)


bot.run("token was here")

当我通过 Python Launcher 运行它时,这是我的错误:

Kalyns-MacBook-Air:~ kalynwoodbury$ cd 
'/Users/kalynwoodbury/Desktop/bot2/' && '/usr/bin/pythonw'  
'/Users/kalynwoodbury/Desktop/bot2/Bot1.py'  && echo Exit status: $? && exit 1
 File "/Users/kalynwoodbury/Desktop/bot2/Bot1.py", line 9
    async def on_ready():
    ^
SyntaxError: invalid syntax
Kalyns-MacBook-Air:bot2 kalynwoodbury$ 

我做错了什么?

编辑:应用程序说 Python 3.6。昨天我卸载它并再次下载它,确保按3.6.4,安装程序说Python 3.6.4。在我的生活中,我从未对任何事情如此确定。确保我有正确的版本绝对是我寻找的第一件事。

编辑:如果我尝试使用 python3 bot.py,它会给我相同的错误代码,但针对该行。

【问题讨论】:

  • 如何确认您正在使用 Python 3.6.4 运行?
  • 如果您运行的是 3.5 以上的版本,它将工作。尝试在函数定义上方添加@asyncio.coroutine。
  • 您运行机器人的命令看起来很奇怪。当你只做python3 bot.py(或任何文件被调用)时会发生什么。
  • 同样的问题,你解决了吗?

标签: python bots discord discord.py


【解决方案1】:

我认为问题出在您的导入中。当我运行相同的代码时,我得到了一个关于命令前缀的错误。我认为异步应该没有任何问题,因为您已经导入了它。试试这个代码:

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

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

@bot.event
async def on_ready():
    print ("Bot Online!")
    print (bot.user.name)


bot.run("TOKEN GOES HERE")

我认为当您使用 command_prefix 时,代码会感到困惑,因为从来没有导入任何带有命令前缀的东西。而不是执行 import discord.ext.commands,您应该执行 from discord.ext import commands。

【讨论】:

    猜你喜欢
    • 2021-05-09
    • 2021-01-17
    • 2020-09-17
    • 2020-05-11
    • 2017-04-26
    • 1970-01-01
    • 2021-11-08
    • 2021-10-02
    • 2021-08-19
    相关资源
    最近更新 更多