[DAY 06]物品拍卖价格查询功能(4/4)

今天终於能把查询物品拍卖价格网址这功能讲完了(汗)

物品拍卖价格网址目前热门的是universalis

要让查询的物品能够辨识出他是在哪个页面主要有三个步骤:

  1. 辨识使用者的意图明确是来查询物品价格
    因此样板式模型会是比较好的做法,也就是透过前缀的规则来辨识使用者的意图

  2. 辨识物品名称
    透过第二天建立的字典来辨识物品名称

  3. 将物品名称转换成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

虹语岚访仲夏夜-12(专业的小四篇)

「开心农场? 你认真的?」 『不然呢? 告诉你,不只开心农场,还有开心湖好吗...』 「开心湖? 先...

visual studio 编译 cpython

这是我在win 10用visual studio 来编译cpython的原始码,可以参考[your ...

Day 10 - Kotlin的函式

Day 10 - Kotlin的函式 不知不觉我们已经到达了第十天了,昨天讲的是when条件判断跟w...

Python argparse 套件入门使用

test.py import argparse parser = argparse.Argument...

Day25-你的资料安全吗(三)

前言 因为资料库基本上可以分成 SQL 跟 NoSQL 两大类,昨天讲完 SQL injection...