我有一个Discord机器人,它正在分析不和谐服务器内每个用户对话的积极性。我想找到一种方法,将用户获得其邮件评级的实例的所有结果相加,然后在一个小时内找到他们的平均阳性。
这是我的代码...
@bot.event
async def on_message(message):
if message.author == bot.user:
return
with open('data.txt', 'a') as f:
positivity = {}
member = message.author
response = requests.post('http://text-processing.com/api/sentiment/', {
'text': message.content
}).json()
pos = response["probability"]["pos"]
positivity[member] = pos
for key, value in positivity.items():
print(key, value, file=f)
f.close()
await bot.process_commands(message)
每个消息阳性的值在...处引用
pos = response [“概率”] [“ pos”]
所以现在我唯一的问题是我如何才能将单个成员对他们所有邮件的正面评价的总和取平均值,然后取平均值。
仅供参考,
for key, value in positivity.items():
print(key, value, file=f)
以类似以下形式打印出来:
EnzoWork#8248 0.46118706992711267 (该评分等级不超过0-1)
答案 0 :(得分:1)
处理文件需要读取文件,对该用户的条目求和,然后将其除以此类条目的数量:
@bot.command(pass_context=True)
async def positivity(ctx, user: discord.Member):
query_name = str(user)
total = lines = 0
with open('data.txt') as f:
for line in f:
if not line.strip(): # skip blank lines
continue
name, amount = line.split()
if name == query_name:
total += float(amount)
lines += 1
if lines:
await bot.say("Average positivity for {} is {}".format(user.mention, total/lines))
else:
await bot.say("Could not find entries from that user.")
对于这种情况,建议您开始捕获有关每条消息的更多数据,并开始使用数据库进行存储。然后,您可以更轻松地在数据集中进行复杂的搜索和汇总。我还建议使用ID代替用户的名称来代表用户。