我试图让机器人发送不同的响应。
例如下面的代码,当我们键入?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"
},
]
答案 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