iT邦幫忙

2021 iThome 鐵人賽

DAY 6
0
AI & Data

建立FF14資訊Discord chatbot系列 第 6

[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("無相關資訊")

執行程式後功能呈現如下:


上一篇
[DAY 05]物品拍賣價格查詢功能(3/4)
下一篇
[DAY 07]查詢各國物品名稱
系列文
建立FF14資訊Discord chatbot30

尚未有邦友留言

立即登入留言