如何向用户发送不同的消息

时间:2018-07-09 06:26:21

标签: python-3.x discord.py

我试图让机器人发送不同的响应。

例如下面的代码,当我们键入?mention_ping @user机器人回复的Pong

@bot.command(pass_context=True)
async def mention_ping(ctx, member: discord.Member):
  with open('data.txt') as json_file:
    data = json.load(json_file)
    for p in data:
      if(p['ID'] == str(member.id)):
        await bot.send_message(ctx.message.channel, p)

因此,当我们键入?mention_ping @user时,机器人需要从.json之类的外部文件中回复。

所有成员的详细信息都保存在.json之类的外部文件中。 因此,每个成员的所有响应都应该有所不同,因此如何开始。

更清楚的示例:外部文件.json将包含所有成员的详细信息,例如姓名,年龄,DOB,电话号码等...

[
    {
        "ID": "01", 
        "Name": "Steve", 
        "Sex": "Male", 
        "age": "30", 
        "DOB": "22-3-2000",
        "PH": "222-333-3333"
    }, 
]

1 个答案:

答案 0 :(得分:1)

您必须先添加import json
代码看起来像这样

@bot.command(pass_context=True)
async def mention_ping(ctx, member: discord.Member):
  with open('data.txt') as json_file:
    data = json.load(json_file)
    for p in data:
      if(p['ID'] == str(member.id)):
        await bot.send_message(ctx.message.channel, p)

data.txt在哪里

  

[{“ ID”:“ 01”,“ Name”:“ Steve”,“ Sex”:“男性”,“年龄”:“ 30”,“ DOB”:   “ 22-3-2000”,“ PH”:“ 222-333-3333”}]

您在“ PH”之前缺少逗号,因此您的json文件仍然无法正常工作

对于多人而言,data.txt看起来像是:

  

{“人”:[
  {“ ID”:“ 123123”,“名称”:“史蒂夫”,“性别”:“男性”,“年龄”:   “ 30”,“ DOB”:“ 22-3-2000”,“ PH”:“ 222-333-3333”},
  {“ ID”:“ 124124”,   “名称”:“ Rachel”,“性别”:“女性”,“年龄”:“ 25”,“ DOB”:“ 22-4-2003”,“ PH”:   “ 222-333-4444”},
  {“ ID”:“ 125125”,“名称”:“ George”,“ Sex”:“ Male”,“ age”:   “ 22”,“ DOB”:“ 21-3-2001”,“ PH”:“ 222-333-5555”}]}

and for循环必须包含['people'] for p in data['people']:

“ ID”键是用户的不一致ID