我目前正在尝试为discord制作一个消息计时器,基本上我想要的是当用户设置一个消息计时器时我希望每隔x秒发送一次消息,但由于某种原因它只发送一个消息即使我已经在两个频道中进行了设置。
这是我的代码。
async def on_ready(self):
print("SmartCord rewrite is ready!")
self.remove_command('help')
#ch = self.get_channel(446904504210948099)
#await ch.send("\n".join(good))
await self.change_presence(activity=discord.Streaming(name=f"{len(self.guilds)} Guilds | /help", url="https://www.twitch.tv/smartcord"))
for channel in self.get_all_channels():
if db.messagetimers.find({"channel_id":str(channel.id)}).count():
for x in db.messagetimers.find({"channel_id":str(channel.id)}):
message = x['message']
chan = x['channel_id']
y = self.get_channel(int(chan))
while True:
await y.send(message)
await asyncio.sleep(60) # Using 60 seconds as an example
由于我对python不是那么好,我真的不知道如何解决这个问题。
答案 0 :(得分:0)
看起来像是缩进错误。您在循环中设置chan
变量,然后在该循环之外使用它将通道解析为y
变量。因此,如果不深入研究代码,我会假设最后四行需要一个更多级别的缩进。