創作內容

26 GP

【Discord BOT】Windows上自架簡易點歌機器人教學

作者:Yuzuki Yuki│2018-03-16 04:59:24│贊助:304│人氣:36479
【Discord BOT】Windows上自架簡易點歌機器人教學
 
一、前言
        是從Youtube抓歌來放的機器人,篇幅有點長,圖多www
採用的是https://github.com/Just-Some-Bots/MusicBot這篇的機器人,其實不會講太多複雜的設定,就依原文翻譯並佐以圖片說明,雖然不難,但是如果你對電腦基礎觀念都有問題的請趕快上一頁,這裡不適合你;如果是住外面宿舍,網路業者設有防火牆等問題我沒辦法幫你處理;如果野心很大想玩得很專業的…抱歉我是臭NOOB,如果寫的不對還請多多糾正。
        以下文章接是在64位元的Windows 10下進行,其他版本Windows應該也是一樣,不會差太多。
 


二、前置硬體準備
1. 一台能長時間開機的Windows PC
    (目前架在I7-3770上)
2.穩定的網路
 


三、軟體下載及安裝
        會用到Notepad++、Python 3.5.4、Git for Windows三款軟體,等等依序下載安裝

1. Notepad++ (文字編輯器,其他地方也很好用)
 
 
中間一些條款請點選同意,到此介面稍作停留,先找到Localization這項,點開後找Chinese (Traditional)安裝繁中介面,如果覺得無所謂也可以直接跳過。

 
下一步後三個選項,前兩個不必勾選,第三個是增加捷徑到桌面,要勾不勾自行決定。

 
安裝完成後直接關掉開啟的視窗即可。
 
2. Python 3.7.0 (之前建議安裝的3.5目前版本沒什麼毛病,不過建議有空還是更新到3.7保險)
 
 
點開後的頁面請注意下面兩項需要勾選
【Install launcher for all users (recommended)】
【Add Python 3.5 to PATH】
確認有打勾勾後按下有盾牌的Install Now等待安裝完畢即可

 
3. Git for Windows (之後下載及更新的工具,安裝最新版即可)
 
 
一樣請先下一部大法,點到這個頁面暫停一下,
確認勾選為【Use Git from the Windows CommandPrompt】

 
下一步不用更改,下一步到此畫面請注意一下,
確認勾選為【Checkout Windows-style, commitUnix-style endings】

 
下一步後確認勾選為【Use MinTTY (the default terminalMSYS2)】

 
之後下一步也不用更改,安裝完畢後一樣關閉視窗即可
 
 
 
四、機器人下載
在你的電腦找個好位置準備當機器人的家,
因為線上音樂的快取會下載到同一個位置,儲存空間需要足夠,
我以我的使用者文件夾為例,
找個空白的地方點右鍵,選【Git Bash here】,
此時會打開一個黑色的指令視窗,請複製括弧內的文字
【git clone https://github.com/Just-Some-Bots/MusicBot.git MusicBot -b master】,
並於指令視窗中貼上(黑視窗右鍵,選Paste),然後用力按下鍵盤上的enter鍵執行。



 
完成後,會在剛剛右鍵的位置得到一個叫”MusicBot”的資料夾機器人相關的文件都會在裡面,等等在說明怎麼設定運作,另外,黑視窗直接關閉即可。
 
 
 
五、機器人連結DISCORD帳戶、伺服器設定
首先,打開並且登入你的DISCORD程式在”使用者設定” > ”外觀” 選項底部
開啟【開發者模式】

 
開啟後,順便點發藍光的Discord API或這邊(也可從官網最下方"開發人員"下面的"應用程式"進入),會開啟網頁,在頁面點選"Create an application"
 
下一個頁面,請幫你的機器人取個名字,也可以順便加一張大頭貼,這邊設定等等會直接繼承到之後步驟,記得在彈出提示中選擇"Save Changes"
(BTW.取叫MusicBOT之類的Discord會說同名的太多不准你建立)
 
之後點選左側欄位SETTINGS下的"Bot",在頁面BUILD-A-BOT下點選【Add Bot】然後選【Yes, do it!】確認
 
接著在變大的頁面裡點選Click to Reveal Token或是直接點下方的Copy,複製下這一排大小寫英文混雜數字的亂碼,請記住有這東西,馬上就會用到
 
網頁先別關,回到剛剛下載好的機器人資料夾,打開他,裡面有一個叫”config”的資料夾,點進去可以找到一個叫【example_options.ini】的檔案,對他右鍵複製,然後貼上一個複本在旁邊,把複本名稱改成【options.ini】;之後對【options.ini】這個檔案右鍵選取”Edit with Notepad++”開啟

 
開啟後我們先找到Token =bot_token 這一項,回到剛剛網頁,把那排亂碼複製並貼在bot_token的位置;之後下面一點有一個OwnerID = auto,請打開Discord的桌面程式,在你的伺服器對話或成員隨便找一個有你的名字的地方按下右鍵,選取【複製ID】,把複製下來的東西貼在auto的位置,兩樣完成後如下方第二張圖,文字檔就可以先存檔(Ctrl+S或點選上方比較大片的單片藍色磁片,存完書籤上的紅色磁片也會變為藍色),但先別急著關,還有一些東西你說不定會用到。


 
在文字檔可以找到一個選項是CommandPrefix= ! 這個是下指令時的字首,如果驚嘆號已經有其他機器人在用可自行改成米字號或百分比等符號;
BindToChannels = 可以在後方加入文字頻道的ID(像複製擁有者ID一樣對文字頻道右鍵),讓機器人只接收那個頻道所下的指令;
AutojoinChannels = 則是在後方加入語音頻道的ID,讓機器人綁定一個指定的語音頻道,機器人開機時就會直接加入。
其他選項都有英文介紹,如果有興趣幽冥暗月大大有更詳細介紹,請移駕這裡
,本文就不多談。
 
 

六、就差最後一點了(自動撥放、邀請進入伺服器)
在開始執行程式前還可以再設定一點東西,還記得config資料夾裡有個_autoplaylist.txt嗎?你可以參考他的格式新增一個autoplaylist.txt文字檔,去做閒置時自動撥放的清單,想試試效果就直接建立複本改名稱也是可以。
 
再邀請近伺服器前,先更新youtube的下載器及機器人的相關套件,請回到上一層MusicBot資料夾,執行” update.bat”,結束後關閉指令視窗即可。
 
希望你網頁還沒關閉,在剛剛機器人網頁裡左側欄進入” OAuth2”頁面,在SCOPES下勾選”bot”,並在後面出現的下半區勾選”Administrator”後複製中間的網址,貼到瀏覽器的新分頁並前往,選擇欲加入的伺服器,確認後即完成機器人加入。
 
最後最後,在MusicBot資料夾執行” run.bat”即可運行機器人,黑色視窗請不要關。

 
 
 
七、指令、維護及更新
常用指令如下(打在文字頻道,字首請自行更換)
撥放音樂:%play https://youtu.be/OOOOOXXXXX
跳過音樂:%skip
查詢現在播放:%np
檢視播放清單:%queue
機器人重新開機:%restart
機器人關機:%shutdown
讓機器人傳回youtube清單所有歌曲連結給建立者:%pldump <URL>
 
維護主要是Youtube下載器更新速度很快,而且不會提醒,雖然不一定每次都要更新才能用,但久了用舊的下載器會出問題,請先將機器人關機(直接關掉視窗也沒差),運行”update.bat”,也會順便更新機器人程式。
 
複數機器人架設方式很簡單,先直接把MusicBot資料夾改其它名稱,然後從上面開始的下載開始重複一遍就行。
 
其他有使用上的問題請參考作者網站
 
----------------------------------------------------------------------------------------
9/06
鑒於問題裡常看到很多帶答案問問題,就不一一回覆
如果遇到我不回覆你的問題
那可以上這個網站,把錯誤報表貼上去
裡面的機器人會告訴你問題在哪裡w

10/15
有巴友反映無法撥放清單
解決方法如下((有點懷疑是作者BUG啦
config資料夾的permissions.ini開啟後
把[Default]下面"Extractors = "後面的全部刪除後儲存重開即可

1/3
因工作繁忙,關閉回覆,有問題請自行爬文。
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=3921950
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:Discord|Discord Bot|Windows|音樂機器人|機器人|教學

留言共 30 篇留言

幽冥暗月
我在發布Discord Music Bot有關的創作時在文章裡因為需要前置動作於是就提及了您的文章
這是我的文章網址https://home.gamer.com.tw/creationDetail.php?sn=3966295
希望有幫助到您~ [e12]

04-24 01:59

Yuzuki Yuki
沒問題,稍微對新版修改了點內文,也提及了您的文章04-24 08:23
好吃大阪燒
執行時按 RUN.bat 跑完直接自己關掉 怎麼處理?

05-05 23:36

Yuzuki Yuki
看你的機器人資料夾裡的.\logs下有沒有生成記錄檔…
然後再看紀錄去找是哪裡出問題
不然會造成閃退的原因太多了…
不知道從哪裡醫05-06 00:17
好吃大阪燒
[515.376091003] launcher-ERROR: Error starting bot
Traceback (most recent call last):
File "run.py", line 347, in main
from musicbot import MusicBot
File "C:\Users\user\MusicBot\musicbot\__init__.py", line 74, in <module>
from .bot import MusicBot
File "C:\Users\user\MusicBot\musicbot\bot.py", line 17, in <module>
import colorlog
ImportError: No module named 'colorlog'
[521.377563477] launcher-INFO: Attempting to install dependencies...
[632.891654968] launcher-CRITICAL: You may need to run as admin to install dependencies.
[633.891105652] launcher-INFO: All done.

05-06 00:28

Yuzuki Yuki
你再跑一次update.bat
colorlog會一起下載更新,應該不會有缺失的狀況05-06 00:46
あかつき
請問一下有辦法新增其他指令嗎?
想說既然有用python我想弄個指令可以發P網的圖之類的

05-08 22:41

Yuzuki Yuki
可以吧w
只是說真的我沒有仔細去研究他是怎麼寫的XDD
當初這篇的目的只是為了教懶得看英文又怕點錯的朋友怎麼架設而已
也沒打算深入w
05-09 01:01
言言
Traceback (most recent call last):
File "run.py", line 347, in main
from musicbot import MusicBot
File "D:\言言\Documents\MusicBot\musicbot\__init__.py", line 6, in <module>
from discord.ext.commands.bot import _get_variable
File "C:\Users\言言\AppData\Local\Programs\Python\Python35\lib\site-packages\discord\ext\commands\__init__.py", line 13, in <module>
from .bot import Bot, when_mentioned, when_mentioned_or
File "C:\Users\言言\AppData\Local\Programs\Python\Python35\lib\site-packages\discord\ext\commands\bot.py", line 146, in <module>
class Bot(GroupMixin, discord.Client):
AttributeError: module 'discord' has no attribute 'Client'

[INFO] launcher: All done.

06-04 21:18

言言
這樣是要做甚麼動作

06-04 21:51

Yuzuki Yuki
你是不是中間有網路有斷線過
重開如果能正常啟動就可以了
不行的話一樣跑更新看看...06-20 09:46
言言
都還是不行

06-21 23:26

Yuzuki Yuki
那你要不要檢查一下token有沒有貼錯看看…
我測試沒發生過這種狀況06-29 18:00
幻空
我按run.bat後視窗換顯示這幾行字
WARNING: Owner unknown, bot is not on any servers.
WARNING: To make the bot join a server, paste this link in your browser.
Note: You should be logged into your main account and have
manage server permissions on the server you want the bot to join.
https://discordapp.com/oauth2/authorize?client_id=464114371140780037&scope=bot&permissions=70380544

Not bound to any text channels

Not autojoining any voice channels
機器人也沒加入伺服器裡
這是log的文件的訊息
[1.1868262290954590] 2018-07-05 13:44:34,849 - WARNING - musicbot.config | In config.py::MainThread(6560), line 112 in run_checks: i18n file does not exist. Trying to fallback to config/i18n/en.json.
要如何處理?

07-05 13:47

Yuzuki Yuki
config設定沒設定好
記得要邀請近伺服器07-05 14:13
幻空
對了那些下載自動撥放的音樂,除了手動刪除外,是否可外加指令使他自動清理

07-11 02:23

Yuzuki Yuki
這機器人不是我寫的ww
理論上應該可行啦
只是我根本沒仔細去看過他的程式怎麼寫的07-15 16:01

終於終於可以了

07-15 19:48

卡斯托拉提夫
Collecting discord.py[voice]~=0.16.0 (from -r requirements.txt (line 1))
Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x000001E7D5EE37F0>: Failed to establish a new connection: [WinError 10061] 無法連線,因為目標電腦拒絕連線。',))': /simple/discord-py/

07-22 09:22

Yuzuki Yuki
你電腦的proxy是不是有設定過...
清除掉直接連線看看07-26 19:27
冷色系
救我
Problem:
Bot cannot login, bad credentials.

Solution:
Fix your token in the options file. Remember that each field should be on their own line.

07-24 17:37

Yuzuki Yuki
token設定有誤07-26 19:28
楓傲
想請問 skip時人多的時候他會要求投票 有甚麼辦法可以設定成人多時(大約6~7人)不投票也可以跳過的呢?

07-25 02:14

Yuzuki Yuki
config裡的SkipsRequired改1
SkipRatio改007-26 19:30
Yuzuki Yuki
其他設置可以參考另外一位大大那篇
https://home.gamer.com.tw/creationDetail.php?sn=3966295
蠻詳細的07-26 19:31
nickname
bot沒上線 cmd是這樣

[INFO] launcher: Starting sanity checks
[INFO] launcher: Checking for Python 3.5+
[INFO] launcher: Checking console encoding
[INFO] launcher: Setting console encoding to UTF-8
[INFO] launcher: Ensuring we're in the right environment
[INFO] launcher: Adding local bins/ folder to path
[INFO] launcher: Required checks passed.
[INFO] launcher: Optional checks passed.
[INFO] launcher: Moving old musicbot log

Starting MusicBot 1.9.7
Loaded autoplaylist with 2531 entries
[INFO] launcher:
An error has occured:
Problem:
Bot cannot login, bad credentials.

Solution:
Fix your token in the options file. Remember that each field should be on
their own line.



[INFO] launcher: All done.
Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x0000019B42E5BAC8>
Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x0000019B3F375D30>

C:\Users\Administrator\Desktop\MusicBot\Musicnot>

08-11 18:49

bulochka
我在要把機器人邀進司服器的時候
網頁出現UNKNOWN_ERROR
請問該怎麼辦

08-12 12:36

treelazy87
最近機器人要點英文歌或超過一首時
會出現錯誤不給點歌
請問這是甚麼情況呢

09-08 01:20

Yuzuki Yuki
最近很少用…
我也不清楚你說的狀況
多更新吧
感覺作者最近更新勤勉09-08 10:33
blackcat
music bot 是不是只可以播youtube的歌?
而且歌單可以刪掉自己再做嗎?
求回覆謝謝><

09-23 03:04

Yuzuki Yuki
不只Youtube,也能播soundcloud
((只是後者台灣很少看人用ww
歌單你是指無人點歌自動撥放的歌單嗎?
你可以先在youtube拉好你的歌單,
對上線的機器人用指令%pldump <清單網址>
然後去替換autoplaylist裡的網址後重開機器人就行了09-23 13:17
blackcat
是將那個歌單名稱改回autoplaylist嗎?
而且我換了之後點不開update.bat
他會跳出去
是沒關係的吧?

09-23 17:04

blackcat
想問一下bot是不是不能播Youtube的非公開的視頻?

10-04 00:18

Yuzuki Yuki
知道網址能看的那種我沒試過
私人絕對不行
有鎖境外IP的也不能播10-04 02:50
BarleyTea
[ERROR:bot] Exception in on_message
Traceback (most recent call last):
File "C:\Users\yahoo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\discord\client.py", line 221, in _run_event
await coro(*args, **kwargs)
File "D:\MusicBot\MusicBot\musicbot\bot.py", line 2600, in on_message
user_permissions = self.permissions.for_user(message.author)
File "D:\MusicBot\MusicBot\musicbot\permissions.py", line 93, in for_user
if role.id in group.granted_to_roles:
TypeError: 'in <string>' requires string as left operand, not int
默認組別輸入指令 機器人不會給回復 但是BAT有收到這樣的訊息((play.np.skip...所有指令都不行

10-06 14:51

Yuzuki Yuki
不好意思慢回
你更新看看吧…
我沒碰過這問題…也看不太出來哪裡可以解決10-15 21:47
momocoso
你好目前在用youtube音樂清單時還是會顯示:
Error
You don't have permission to use that command.
Reason: You do not have permission to play media from this service.
請問要怎麼辦?

10-15 21:43

Yuzuki Yuki
config資料夾的permissions.ini
把[Default]下面"Extractors = "後面的全部刪除後儲存重開10-15 23:19
treelazy87
最近是不是不能播英文歌啊...?

10-22 22:36

Yuzuki Yuki
注意一下你播放的歌曲有沒有地區限制
我自己測了一些都能撥放
沒遇到任何問題10-24 12:00
刈包Σ(lliд゚ノ)ノ
最近為什麼在播歌的時候bot會一直閃爍呀0.0 之前都不會地說 有點像語音感應那樣一直閃

10-25 21:35

Yuzuki Yuki
DIS沒台灣伺服器,可能是連外國不穩10-25 23:25

有辦法開啟時不播放任何音樂嗎?
autoplaylist.txt清空? (還是會播放關閉前的最後一首

10-25 23:34

Yuzuki Yuki
清空就好
記得重開機器人
最後一首下skip就能跳過10-25 23:36
洨布丁
Solution:
Fix your token in the options file. Remember that each field should be on their own line.
您好 以翻譯過 改了多次 還是沒辦法解決 囧

11-09 14:52

Yuzuki Yuki
等號前後空一格
然後不是改範例檔…11-09 17:23
洨布丁
不好意思打擾一下
我設定好了 也正常啟用
但是發現 歌單替換了 但是還是在播同樣的音樂
還有指令沒辦法使用O_O

11-09 19:13

Yuzuki Yuki
跳過指令是用投票跟比例來決定是否能跳過
options 大概在75行那邊可以改
SkipRequired = 1
SkipRatio = 0
這樣一人就能決定是否Skip掉當前歌曲11-10 00:42
Yuzuki Yuki
無法播YT歌單
permissions裡
把[Default]下面"Extractors = "後面的全部刪除後儲存重開即可

11-10 00:43
阿傑Ekko
[INFO] launcher: Starting sanity checks
[INFO] launcher: Checking for Python 3.5+
[INFO] launcher: Checking console encoding
[INFO] launcher: Setting console encoding to UTF-8
[INFO] launcher: Ensuring we're in the right environment
[CRITICAL] launcher: Bot wasn't installed using Git. Reinstall using http://bit.ly/musicbotdocs.
Press enter to continue . . .

如何解決?

11-30 21:58

Yuzuki Yuki
[INFO]啟動器:啟動完整性檢查
[INFO]啟動器:檢查Python 3.5+
[INFO]啟動器:檢查控制台編碼
[INFO]啟動器:將控制台編碼設置為UTF-8
[INFO]發射器:確保我們處於合適的環境中
[CRITICAL]啟動器:未使用Git安裝Bot。 使用bit.ly/musicbotdocs重新安裝。
按Enter繼續。。。12-01 10:00
X~Chi-Square
[ERROR] launcher: Error starting bot
Traceback (most recent call last):
File "run.py", line 368, in main
m = MusicBot()
File "E:\MusicBot\musicbot\bot.py", line 71, in __init__
self.config = Config(config_file)
File "E:\MusicBot\musicbot\config.py", line 83, in __init__
self.run_checks()
File "E:\MusicBot\musicbot\config.py", line 187, in run_checks
self.bound_channels = set(int(item) for item in self.bound_channels)
File "E:\MusicBot\musicbot\config.py", line 187, in <genexpr>
self.bound_channels = set(int(item) for item in self.bound_channels)
ValueError: invalid literal for int() with base 10: 'general'

[INFO] launcher: All done.
第一天有成功 地2天就登不進去了 請大大幫忙Q__Q (感謝

12-12 00:52

X~Chi-Square
我知道哪裡錯了 感謝

12-12 07:24

左丘盆栽
想請問一下 如果要更改機器人的指令要去哪改
想把一些指令改短一點

12-23 13:38

我要留言此作品限好友留言。您尚未登入,請先登入再留言

26喜歡★andrewhghg 可決定是否刪除您的留言,請勿發表違反站規文字。

追蹤私訊

作品資料夾

olduncle04全部人
新手實況~請大家支持~~https://home.gamer.com.tw/live.php?u=olduncle04看更多我要大聲說6小時前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】