Python:为什么我的Discord机器人为一个命令打印多个输出?此外,如何重新启动/关闭机器人程序?

时间:2020-06-29 16:25:15

标签: python python-3.x discord.py

我对python真的很陌生,并且一般来说在编码方面都相对缺乏经验,所以我自己不能真正解决这个问题。

该机器人在我尝试运行命令的前几次没有复制输出,但是在我添加了更多命令之后,它开始乘以输出。我还剪切并粘贴了一堆代码行,但是在文本编辑器(Atom)中没有任何错误给我带来错误。

此外,如何轻松重启我的机器人?我正在使用Atom,但看不到在其上进行此操作的明显方法...

这是我使用的代码(最后剩下的就是令牌):

import discord
from discord.ext import commands

client = commands.Bot(command_prefix = '.')

@client.event
async def on_ready():

       print("Hello world")

@client.event
async def on_member_join(member):
    print(f'{member} has joined a server')

@client.event
async def on_member_remove(member):
    print(f'{member} has left a server')


@client.command()
async def moon(ctx):
    await ctx.send('dancer')

@client.command()
async def ping(ctx):
    await ctx.send(f'{round(client.latency * 1000)}ms')


@client.command()
async def test(ctx):
    await ctx.send('test')

Example

Another example

我非常感谢大家的投入,谢谢!

2 个答案:

答案 0 :(得分:1)

该机器人将输出结果相乘很可能是一个错误,因为我看不到您做错了什么。我认为您的IDE可能有问题-我不建议Atom运行您应该使用VScode或PyCharm的Python脚本-或您的Python解释器有问题。

为了轻松关闭机器人,我在机器人中使用了以下命令:

import sys
import discord
from discord.ext import commands

client = commands.Bot(command_prefix = ".")

@client.command()
async def quit(ctx):
    sys.exit()

client.run("")

之后,只需再次运行您的程序即可。但是最简单的方法是手动终止程序。

答案 1 :(得分:0)

我想到的重新启动bot的最快方法是简单地手动停止python代码。我在atom中使用atom-python-run包来运行我的python代码。我只需按F5键开始代码,它就会在原子文本编辑器之外打开控制台。从那里停止我的代码就像关闭该窗口一样简单。