微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试在 Repl.it 数据库上为 discord bot 创建多维字典时出现空集

如何解决尝试在 Repl.it 数据库上为 discord bot 创建多维字典时出现空集

我正在尝试创建一个简单的机器人来统计对股票代码评论的请求。

有一小群交易者请求 TA 专家分析图表。这将作为一个不和谐的机器人运行。

我想创建一个类似的字典

民意调查[ticker][user] = 1

通过这种方式,它将保存一个用户字典,其中包含关闭股票代码用户字典。

这样代码请求就不能重复,用户也不能两次为同一个代码投票。

然后我会将其保存在 Repl.it 上的密钥库中

这是我使用 python 的第二天,虽然我之前用其他语言编写过代码,但很多年没有了..只是想确保我走在正确的轨道上。

用户将像这样输入他们的投票:

!v ZRX

最终我们希望看到如下结果:

!投票结果

ZRX:MoonRaccoon、Dontcallmeskaface、TheDirtyTree
链接:MoonRaccoon,TheDirtyTree
XRP:不要调用meskaface

所以我认为支持这一点的最佳数据结构是这样的:

poll = {'ZRX' : {'MoonRaccoon' : 1,'Dontcallmeskaface' : 1,'TheDirtyTree' : 1},'LINK' : {'MoonRaccoon' : 1,'XRP ' : {'Dontcallmeskaface'} : 1}

这有意义吗?

client = discord.Client()

def update_poll(ticker,requestor):
  Vote = {ticker : {requestor : 1}}
  if "poll" in db.keys():
    db["poll"].setdefault(ticker,{})[requestor] = 1
  else:
    db["poll"] = Vote


@client.event
async def on_ready():
  print('We have logged in as {0.user}'.format(client))

@client.event
async def on_message(message):
  if message.author == client.user:
    return

  msg = message.content
 
  if msg.startswith("!v"):
    ticker = msg.split("!v ",1)[1]
    author = str(message.author).split("#",1)[0]
    update_poll(ticker,author)
     
    await message.channel.send("Vote for " + ticker + " by " + author + " added.")
    await message.channel.send(db["poll"])

  if msg.startswith("!clear"):
    
    db["poll"] = {}
    
    await message.channel.send("poll cleared")
    await message.channel.send(db["poll"])


我设置了 db = {} 并且现在似乎没有为其添加任何选票。

无论我投票给谁,数据结构的每次输出都是相同的。 :

!v MATIC

Vote for MATIC by MoonRaccoon added.
{}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。