嗨,我在运行一个异步循环时遇到了一个问题,它要求一个missing 1 required positional argument: 'number'.
以下是我的工作:
async def purge_modlog(ctx, number):
tomorrow = datetime.now()+timedelta(days=1)
midnight = datetime(year=tomorrow.year, month=tomorrow.month,
day=tomorrow.day, hour=20, minute=35, second=0)
number = int(number)
server = before.server
db = fileIO(self.direct, "load")
if not server.id in db:
return
channel = db[server.id]["Channel"]
if number > 99 or number < 1:
await ctx.send("I can only delete messages within a range of 1 - 99", delete_after=10)
else:
author = ctx.message.author
authorID = author.id
mgs = []
number = int(number)
channel = modlog
async for x in bot.logs_from((channel), limit = int(number+1)):
mgs.append(x)
await asyncio.sleep((midnight - datetime.now()).seconds)
print("Deleting modlog messages 14 day or older")
await asyncio.sleep(5)
await delete_messages(mgs)
await ctx.send('Success!', delete_after=4)
await asyncio.sleep(86400) # Wait 24 hours
def check_folder():
if not os.path.exists('data/modlogset'):
print('Creating data/modlogset folder...')
os.makedirs('data/modlogset')
def check_file():
f = 'data/modlogset/settings.json'
if not fileIO(f, 'check'):
print('Creating default settings.json...')
fileIO(f, 'save', {})
def setup(bot):
check_folder()
check_file()
q = ModLog(bot)
loop = asyncio.get_event_loop()
loop.create_task(q.purge_modlog())
bot.add_cog(q)
在defdef setup(bot):
下循环事件,可以看到
这应该循环事件(q.purge_modlog())
我不确定我在这里做错了什么。我已经试过了(q.purge_modlog(ctx, number))
line 686, in setup
loop.create_task(q.purge_modlog(ctx, number))
NameError: name 'ctx' is not defined
如果有人能帮我那就太好了。添加这是一个模块。在
下面是我将如何构造它(我现在没有使用
discord.py
的计算机,因此可能有一些错误)。我们有一个on_ready
事件,该事件为每个拥有我们想要维护的通道的服务器启动后台任务(这可能会在一个通道列表中循环,或者类似的东西)。在实际的清除全部由^{} 协同程序处理。我们只需向它传递一个
datetime
对象,它将从该日期之前删除100条消息(这是可配置的)。然后它会睡一天,然后重复。在我在这里改正了一些错误。试着通读不和.py关于purging消息的文档。在
相关问题 更多 >
编程相关推荐