自我机器人无法与齿轮运行功能?

时间:2020-08-25 02:08:36

标签: python discord.py

我正在运行从YouTube教程中找到的此脚本,并且该脚本可以更早地运行。现在似乎不再起作用了。

无效的脚本

import pandas as pd

# note that `sample data` has been modified into a list of dictionaries
sample_data = [
    {'region': 'urn:li:region:9194', 
     'followerCounts': {'organicFollowerCount': 157, 'paidFollowerCount': 0}}, 
    {'region': 'urn:li:region:7127', 
     'followerCounts': {'organicFollowerCount': 17, 'paidFollowerCount': 0}}
]

似乎好像dfs = list() # convert one dict at a time into a data frame, using json_normalize() for sd in sample_data: t = pd.json_normalize(sd) dfs.append(t) # convert list of dataframes into a single data frame, # and change column labels t = pd.concat(dfs).rename(columns={ 'followerCounts.organicFollowerCount': 'organicFollowerCount', 'followerCounts.paidFollowerCount': 'paidFollowerCount' }).set_index('region') print(t) organicFollowerCount paidFollowerCount region urn:li:region:9194 157 0 urn:li:region:7127 17 0 被“卡住了”,并且不会运行sendMessage函数。脚本运行后,我的机器人也似乎在线。关于如何解决它的任何想法?

我发现有趣的另一件事是,我创建的脚本之一确实可以按预期工作。

有效的脚本

import asyncio
import discord
from discord.ext import commands

client = commands.Bot(command_prefix='', help_command=None, self_bot=False)

class SelfBot(commands.Cog):
    def __init__(self, client):
        self.client = client

    @commands.command()
    async def sendMessage(self, ctx):
        await ctx.send("Send Message")

client.add_cog(SelfBot(client))
client.run(token, bot=False)

这将在我向服务器发送消息后向我发送消息。

1 个答案:

答案 0 :(得分:1)

您的命令可能不起作用,因为您有一个on_message事件。 on_message事件优先于命令,如果没有process them,则将无法执行它们。

您必须添加的内容是在您的on_message事件中:

@bot.event
async def on_message(message):
    await asyncio.sleep(1)

    with message.channel.typing():
        await asyncio.sleep(2)

    await message.channel.send("test")
    await bot.process_commands(message)

如果不能解决问题,则可能还来自您的commands.Bot变量。由于未知的原因,您似乎有两个commands.Bot变量:clientbot。您应该只有一个。

此外,我看到您将前缀设置为'',如果您不想像Command not found这样的错误,则应设置前缀(例如!,{{1 }},$,...)。

此外,按照@InsertCheesyLine的建议,您应该将齿轮分开在不同的文件中,然后将其放在命名为;的文件夹中,如下所示:

主文件(例如cogs

bot.py

您的一个嵌齿轮(例如from discord.ext import commands bot = commands.Bot(command_prefix='!') extensions = ['cogs.test'] #cogs.(filename) if __name__ == '__main__': for extension in extensions: bot.load_extension(extension) @bot.event async def on_ready(): print(f'Bot is ready to go!') bot.run('TOKEN')

cogs/test.py