尝试在 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 (将#修改为@)