今天终於能把查询物品拍卖价格网址这功能讲完了(汗)
物品拍卖价格网址目前热门的是universalis
要让查询的物品能够辨识出他是在哪个页面主要有三个步骤:
辨识使用者的意图明确是来查询物品价格
因此样板式模型会是比较好的做法,也就是透过前缀的规则来辨识使用者的意图
辨识物品名称
透过第二天建立的字典来辨识物品名称
将物品名称转换成ID
由於universalis的物品网址後面是带物品ID,因此需将物品名称转换成ID,字典里也有ID所以也很好解决
在测试期间发现容易打错字,所以又加了个模糊搜寻功能让查询可以更方便
模糊搜寻功能我是用python套件difflib来实现,python就有自带difflib了所以不用另外装
附上程序码
import discord
import requests
import pandas as pd
import pickle
import difflib
from dotenv import load_dotenv
if __name__ == '__main__':
#读取Token
load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
intents = discord.Intents.default()
intents.members = True
client = discord.Client(intents=intents)
embed = discord.Embed()
@client.event
#当有讯息时
async def on_message(message):
#排除自己的讯息,避免陷入无限循环
if message.author == client.user:
return
#查市价
elif message.content.startswith('?bs '):
user_word = message.content.replace('?bs ',"")
if user_word in item_dict:
if "ID" in item_dict[user_word]:
embed.description = f"[{user_word}价格网址](https://universalis.app/market/{item_dict[user_word]['ID']})"
await message.reply(embed=embed, mention_author=True)
else:
embed.description = f"[{user_word}价格网址](https://universalis.app/market/{user_word})"
await message.reply(embed=embed, mention_author=True)
else:
#模糊搜寻
wordsim_list = difflib.get_close_matches(user_word,wordlist,10,cutoff=0.1)
if len(wordsim_list) > 0:
embed.description ="你可能要查询的词:\n"+"\n".join(wordsim_list)
await message.reply(embed=embed, mention_author=True)
else:
await message.reply("无相关资讯")
执行程序後功能呈现如下:
<<: D-24 资料结构 data structure ? List ? Dictionary
>>: Proxmox VE 安装虚拟机:Ubuntu Server 20.04
「开心农场? 你认真的?」 『不然呢? 告诉你,不只开心农场,还有开心湖好吗...』 「开心湖? 先...
这是我在win 10用visual studio 来编译cpython的原始码,可以参考[your ...
Day 10 - Kotlin的函式 不知不觉我们已经到达了第十天了,昨天讲的是when条件判断跟w...
test.py import argparse parser = argparse.Argument...
前言 因为资料库基本上可以分成 SQL 跟 NoSQL 两大类,昨天讲完 SQL injection...