我正在运行从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)
这将在我向服务器发送消息后向我发送消息。
答案 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
变量:client
和bot
。您应该只有一个。
此外,我看到您将前缀设置为''
,如果您不想像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