刪減自閉源的自用版本,需要連接MySQL/MariaDB資料庫才能使用,以儲存動態資料,下方有操作教學
如果有安裝XAMPP或其他web server,也可順便裝上本bot附屬網站程式配合使用:DPX Discord Bot Website
若要使用Python環境運行原程式碼,最低需求是3.11版
這程式僅能使用單執行緒執行,將吃重CPU的單核效能
程式運行參數於settings.json設定
大部分有年齡限制的YouTube影片都可以直接播,不需設置cookie,但不保證全部都能播
- 提供打包編譯版本,擁有比原生CPython更高的執行效率
- 連線至Character.AI的AI聊天功能
- 可播 YouTube、Google雲端、bilibili、電腦本地檔案 來源的音樂
- 不偵測語音頻道裡是否有人,可常駐播放音樂
- 自由設定的聊天應答機、新人加入歡迎訊息
- 訊息歷史紀錄功能,可傳回被刪除、編輯的訊息(資料存於本地,無資安問題)
- 可即時查詢指令
- 方便閱讀大量資訊的附屬網頁
- 其他如下更多功能...
簡易教學影片:https://www.youtube.com/watch?v=3XOrqhkXuA0,實際請以這GitHub頁面為主
請至:https://discord.com/developers/applications 註冊一bot,並將該bot的token設定到settings.json中,讓此程式套上使用
Discord討論群組:DPX Discord Bot 論道堂,歡迎加入交流!
各項設定的範例都寫在檔案裡,標示☆為必須更改的項目,△為建議更改的項目,其餘隨意
項目 | 說明 |
☆TOKEN | 設定bot token |
☆logChannelID | 設定傳送bot狀態的Discord頻道ID,請從您的Discord群組裡挑選一頻道按右鍵,複製頻道ID並貼上來,啟動時每隔一小時bot會在該頻道發送狀態訊息,配合訊息歷史紀錄功能可當log用 |
☆MySQLSettings | 設定MySQL/MariaDB連線參數 |
maxMessagesSaved | 設定每個頻道儲存在資料庫的訊息歷史紀錄數量上限 |
webSettings/url | 設定本bot附屬網頁網址,若保留為空則不啟用相關功能 |
ffmpegopts | 設定FFMPEG參數 |
musicBotOpts | |
---|---|
maxQueueLen | 設定音樂隊列項目上限,請根據實際環境效能設置 |
bitrate | 設定播音樂時之位元率(注意編碼是Opus,以及實際效果與該DC語音頻道設定有關) |
△localMusicIcon | 設定本機音樂圖標的網址,播本機音樂功能會用到 |
googleDrive | |
fileSizeLimitInMB | 設定播Google雲端音樂的檔案大小上限(單位為MB),避免下載太大的檔案造成網路塞車 |
acceptableMusicContainer | 設定播Google雲端音樂可接受的檔案副檔名,避免被用來播一些不支援的項目造成錯誤 |
△icon | 設定Google雲端圖標的網址,播Google雲端音樂功能會用到 |
characteraiSettings | |
characterID | 設定聊天功能bot所連結的Character.AI角色ID,下方有設定說明,若保留為空則不啟用相關功能 |
clientToken | 設定Character.AI的使用者token,下方有設定說明,若保留為空則不啟用相關功能 |
△newestnhBookNum | 設定當下nh站最新車號,隨機產生本子功能會用到 |
commandPrefix | 已棄用,目前僅為discord套件運行的必要參數 |
上方影片推薦的XAMPP整合包由於過於老舊,且遲遲未修復PHP的CVE-2024-4577漏洞,已不推薦使用
這裡介紹Windows下連接本地MariaDB的懶人包:
1.下載並安裝MariaDB,可以參考這篇文章,root帳號的密碼自己記下就行,之後MariaDB會隨著電腦開機自動啟動,不用再手動開啟
2.開啟順帶安裝的HeidiSQL,點左下角的新增,在右邊輸入root的密碼並點下面的開啟
3.成功開啟後在左上角的工具打開使用者管理,加入一名使用者,用戶名和密碼隨意設置並記下,並在下方的允許存取勾選全域權限,接著按儲存就可以關閉了,之後不用再開
4.將剛才的用戶名和密碼設定至settings.json的MySQLSettings項目裡,然後就可以啟動bot了
在這個頁面右邊的Releases下載新版程式,解壓縮後將舊版程式裡的assets資料夾移至新版,然後設定新版的settings.json即可
如果有不相容的地方會在每次更新時說明
這是讓此bot串接至Character.AI,使其能夠作為AI虛擬角色聊天,目前只能讀取文字訊息,且所有訊息均會視為由同一人發出
前置設定方法:
1.請至Character.AI申請帳號,並記下該帳號的E-mail,可以順便調整一下使用者名稱方便AI稱呼
2.選擇一位要讓bot串接的虛擬角色,並至與該角色聊天的頁面,記下位於網址處的ID(如下圖)
3.使用此bot的/getchattokenemaillink指令輸入Character.AI的帳號,並至E-mail收取信件
4.使用此bot的/getchattoken指令輸入E-mail及信件裡的登入連結,即可取得token
5.將角色ID和token設定至settings.json的characteraiSettings項目裡,重啟bot後就設定完成了
直接tag此bot + (訊息內容) | 與本bot聊天 |
/resetchat | 重設聊天狀態) |
/getchattokenemaillink | 取得Character.AI的連線token (步驟1/2) |
/getchattoken | 取得Character.AI的連線token (步驟2/2) |
/play + (網址) | 播放該音樂,若為播放清單將從該項的位置依序加入 |
/playlocal + (音樂檔案路徑) | 播放該本機音樂(僅限開bot的管理員使用) |
/add + (網址) | 增加該音樂至播放隊列,若為播放清單將從該項的位置依序加入 |
/addlocal + (音樂檔案路徑) | 增加該本機音樂至播放隊列(僅限開bot的管理員使用) |
/pause | 暫停播放音樂 |
/resume | 恢復播放音樂 |
/skip | 跳過目前曲目 |
/loop | 切換單曲重複播放 |
/stop | 停止播放音樂 並清除音樂資料 |
/queue | 查看音樂播放隊列 |
/nowplaying | 查看現正播放的音樂 |
/download | 下載現正播放的音樂 |
/join | 加入用戶所在語音頻道 |
如果播音樂發生問題,請使用/stop清除資料,並再重新操作一次,實在不行請重啟bot
/history | 查詢最近25則修改的文字訊息 |
/historyf + (數字) | 回傳前第n個被刪除的檔案訊息 |
/historyflist | 回傳已刪除的附件檔案列表 |
/historyall + (選項 選項 選項) | 匯出欲查詢的的文字訊息類型總集之Excel檔,只選擇欲查詢的項目即可 |
/sendansweringmsglist | 傳送應答訊息列表檔案 |
/editansweringmsglist | 修改應答訊息列表(請附上應答訊息列表檔案) |
若訊息符合設定條件,bot會回傳設定的訊息內容,若要關閉此功能請將應答列表清空
\assets\answeringMachine\資料夾裡有設定範例
新增/刪除訊息附件檔案須手動於\assets\answeringMachine\(該Discord群組ID)\下放置檔案/刪除
/sendwelcomemsglist | 傳送新人加入歡迎訊息列表檔案 |
/editwelcomemsglist | 修改新人加入歡迎訊息(請附上歡迎訊息列表檔案) |
/nh + (車號) | 傳送該nh本子連結 |
/nhrand | 隨機傳送nh本子連結 |
/jm + (車號) | 傳送該JM本子連結 |
/wn + (車號) | 傳送該wnacg本子連結 |
/pix + (作品號) | 傳送該pixiv作品連結 |
/pixu + (作者號) | 傳送該pixiv作者連結 |
/twiu + (用戶ID) | 傳送該X(twitter)用戶連結 |
/help | 查詢指令 |
/status | 回傳bot狀態 |
/majorarcana + (訊息) | 根據訊息內容使用大密儀塔羅牌占卜 |
/majorarcana3 + (訊息) | 根據訊息內容使用三張大密儀塔羅牌占卜 |
項目 | 版本 | 授權 |
discord.py[voice] | 2.4.0 | MIT License |
AioCAI | 1.0.0 | MIT License |
fake-useragent | 1.5.1 | Apache License Version 2.0 |
gdown | 5.2.0 | MIT License |
openpyxl | 3.1.2 | MIT License |
PyMySQL | 1.1.1 | MIT License |
Requests | 2.31.0 | Apache License Version 2.0 |
yt-dlp | 2024.7.2 | The Unlicense |
- 更新版本時,Discord裡的斜線指令無法自動更新,須重邀一遍bot加入群組才行(不須踢出bot),雖然網路上有許多自動、手動、分群組更新的方法,但我測試全部無效,所以之後更新版本也需一併重邀bot
- 無法播放「https://www.youtube.com/watch?v=rPJz3syNbtE」,且會造成程式錯誤
- 本專案完全由本人抽空維護,更新較慢,敬請見諒!