我目前正在尝试制作一个机器人,允许成员设置机器人然后在服务器中检查的特定关键字(在一段时间内)。如果机器人在消息中检测到该关键字(仅通过另一个bot / webhook),它会警告设置该关键字的用户。
基本上我想做的是像这样的场景:
会员1 --->
!setkeywordnew link
(bot然后将成员1的关键字专门设置为“new link”)
!listkeywords
(bot返回单词/短语“new link”)
会员2 --->
!setkeyword new shoe
(机器人然后将成员1的关键字专门设置为“new shoe”)
!listkeywords
(机器人返回单词/短语“new shoe”)
我遇到的最好的是使用字典和列表。字典的关键是设置关键字的成员的用户ID,列表包含关键字。
变化1:dictt = {}
@bot.command()
async def add(ctx,keyword):
listy = []
listy.append(keyword)
dictt[ctx.author.id] = listy
变化2:
dictt = {}
listy = []
@bot.command()
async def add(ctx,keyword):
listy.append(keyword)
dictt[ctx.author.id] = listy
变化1:每次用户向机器人发送消息时,都会生成一个新列表。每个唯一用户的含义只有一个关键字在列表中。因此,如果用户尝试添加多个关键字,则只会将最新的关键字添加到列表中
变化2:这导致来自唯一用户的关键字被添加到同一列表中,这意味着每个用户可以添加多个关键字,但它们对于每个用户而言不是唯一的。
如何才能让每个独特的用户拥有自己独特的列表,并且仍然能够为其添加多个关键字?
拥有全局dict并在附加之前检查用户的id是否存在,如果没有创建包含新单词的新列表。
memory = {}
def add(id, word):
if id in memory.keys():
memory[id].append(word)
else:
memory[id] = [word]
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。