【发布时间】:2021-04-07 18:25:27
【问题描述】:
我已经使用 Python 修补了一个 Discord 机器人,它已经可以正常工作了,但是有一个问题。
这段代码会重复多次,每个帖子类别一次,现在我有随机、有趣、体育、游戏和新闻,所以你可以看到它的冗余以及它会进一步变成什么,如果需要的话制作更多类别。
if '!random' in messageContent:
channel = int(chanRandom.strip('"'))
channel = client.get_channel(channel)
while c < 50:
if messageContent == '!random':
submission = next(x for x in randomList[sortListHot] if not x.stickied)
sortType = 'Hot sorting'
elif messageContent == '!random top':
submission = next(x for x in randomList[sortListTop] if not x.stickied)
sortType = 'Top sorting'
elif messageContent == '!random new':
submission = next(x for x in randomList[sortListNew] if not x.stickied)
sortType = 'New sorting'
with open(urlFile, 'r') as urlRead:
if str(submission.url) not in urlRead.read():
await channel.send(f"{submission.url}\n{submission.title}\n<https://reddit.com{submission.permalink}>")
await channel.send("-------------------------")
with open(urlFile, 'a+') as urlWrite:
urlWrite.write(str(f'{submission.url}\n'))
c += 2
else:
print(f'{messageContent} repost: {submission.url}')
await channel.send(sortType)
我现在的想法是创建一个包含所有可能命令的列表,但问题是使用变量 channel = int(chanRandom.strip('"')) 在正确的频道中发布,该变量会根据使用的命令 channel = int(chanNews.strip('"')) 等发生变化。
内存使用也存在问题,因为我认为机器人正在保存所有内容,但没有必要,但这是另一个问题。
感谢任何帮助。
【问题讨论】:
-
您不应再将 message.content 用于命令。请使用命令。您可以使用命令组进行类似的操作。
标签: python refactoring discord.py-rewrite reddit