(四) 播放音樂
今天要來教怎麼做簡單的播放音樂功能啦自己研究的時候本來還覺得很困難,後來也發現其實很簡單今日都以Cog內的寫法為主喔
準備今天會用到神奇的下載模組pytubefix用fix是因為原本的失效了,作者好像也沒有要更新
1pip install pytubefix
還有discord的小小附加套件(嗎)我也不太確定是什麼東西,反正裝就對了
1pip install discord.py[voice]
再來就是超級常用的ffmpeg,自行下載只要放在機器人資料夾內就可以了,推薦路徑為從bot.py出發ffmpeg/bin/ffmpeg.exe
加入和離開頻道加入123456789101112131415161718@commands.command()async def join(self,ctx) # 從機器人的所有語音連線中取得本伺服器的連線 # utils是Discord附送的小功能,與機器人操作沒有任何關係 voice = discord.utils.get(self.bot.voice_clients, guild=ctx.guild) # 如果使 ...
印度餐廳-淇里思
這兩天去新竹玩,晚上吃了一家印度料理但這家店真的很讚一進去就看的到滿滿印度風格的裝潢,有夠讚
[{"url":"/印度餐廳-淇里思/裝潢.jpg","alt":"裝潢"},{"url":"/印度餐廳-淇里思/裝潢2.jpg","alt":"裝潢"}]
我點了雙人套餐,有一些菜色可以自選,都很讚
瑪莎拉脆薄片捲 Masala Papad Cone瑪莎拉應該是一個香料組合的稱呼,這個餅裡面包了生洋蔥和番茄加上瑪莎拉,算是清爽的開胃小菜
印式扁豆湯 Dal Soup有點像南瓜湯一樣碎碎的,但是是豆子的口感,沒有特別的味道
奶酪炭烤雞塊 Malai Tikka雞肉很大塊,沒有骨頭,咬下去很過癮有種淡淡的奶味,不會膩
這是我爸媽點的綜合,紅色的應該叫做香料塔都(Chicken Tikka),有點辣
黃醬雞肉咖哩 Chicken Curry跟一般的咖哩不太一樣,可以吃到香料的感覺,味道很重但是不會膩學校營養午餐的螢光咖哩是什麼屎
配上原味印度烤餅,完全超級配我宣布咖哩拌和不拌的問題,解法就是印度烤餅終於吃到異世界悠閒農家裡面的那個饢naan了
...
用Github Action做出動態個人檔案
前幾天正在製作Github的個人檔案,想弄酷一點,偶然接觸了Github Action由於個人檔案的README.md是一個repo,所以其實可以透過這個方式來動態更新Action可以自動化執行終端指令,所以只要設定抓取資料再寫上去就好了
我以抓取氣象局的天氣簡述為例,利用Python執行抓取資料並編輯檔案後Commit本筆記只提供特定目標做法,不解釋整個Action原理
本篇筆記比較複雜難寫,有問題或錯誤歡迎留言成品在這
前置設定
請先準備好Github token,並在該repo新增一個secret,名為TOKEN
請先準備好需要使用的API與Python程式碼,確認其可抓取資料後變更同資料夾內的README.md,並上傳到repo
API的Token也可新增至secret內
前往repo >> Settings >> 側邊欄Actions >> General >> Workflow permissions,切換成Read and write permissions
新增Action
進入儲存庫的Action,新增一個 ...
(三)Cog結構
哈囉各位今天要來教一個新的概念: CogCog有點像是模組,可以將一系列的功能分類到一個獨立檔案內
基本結構123456789import discordfrom discord.ext import commandsclass MyCog(commands.Cog): def __init__(self,bot:commands.Bot): self.bot = botasync def setup(bot): await bot.add_cog(MyCog(bot))
Cog使用類別方式來儲存觸發條件與指令,所以首先須定義一個類別,名稱自訂Discord引入Cog時須使用commands.Cog類別的屬性,所以繼承該類別,並且需初始化bot屬性最後檔案末端定義如上所示的setup函數即可完成基本Cog結構上列的程式碼為必須加入,每個區塊缺一不可
指令接著來示範如何加入指令需先閱讀此篇了解如何定義指令擷取上一部分的程式碼作範例
1234567class MyCog(commands.Cog): def __init__(self,bot:commands.Bot): self.b ...
跟我媽去整復按摩遇到狗勾
今天跟我媽去整復推拿他一直說她全身痛,然後他高中同學就推薦一家在桃園的店反正,重點就是,有狗勾
我不知道他的名字,但是我一進來他就來聞我然後就待在我旁邊還給我摸我以後要養一隻狗
[{"url":"/跟我媽去整復按摩遇到狗勾/1.jpg","alt":""},{"url":"/跟我媽去整復按摩遇到狗勾/2.jpg","alt":""},{"url":"/跟我媽去整復按摩遇到狗勾/3.jpg","alt":""},{"url":"/跟我媽去整復按摩遇到狗勾/4.jpg","alt":""}]
(二) 指令與觸發事件
接續上一篇 基礎bot.py今天要來教各位簡單的指令和條件觸發
今日的內容寫在前一篇介紹的兩個區塊中間喔
指令首先是非常基礎的結構
123@bot.command()async def command(ctx,arg): await ctx.send()
這裡仔細介紹一下各部分
@bot.command()使用裝飾器的方式登錄此函式為一個可呼叫的指令凡是文字指令前面都需要加此裝飾器
async def command()此處為函式定義,函式名稱即為指令名稱以此段程式為例,到時候可用>command呼叫
ctx每一個指令函式都必須有此參數Discord會使用此參數傳入包含該指令被呼叫時的所有資訊組成的物件其本體為discord.ext.commands.Context如:ctx.channel = 發送該指令的頻道物件ctx.author = 發送該指令的使用者物件ctx.send() = 可呼叫的方法,在該頻道發送訊息可至機器人Context的文檔查看所有屬性若有需要可指定ctx:commands.Context以獲取編輯器的自動建議內容 ...
(一) 基礎bot.py
阿囉哈各位,我現在要進入高產模式今天要來教各位怎麼從頭開始寫一個機器人
值得注意的是,此系列文章非單一課程,建議一次跟著學完而非單看一篇文章因為會有許多地方是為後續作準備當然我也會特別標記有這類情形的地方:
後續會更動
此系列從程式出發,請自行準備好機器人與Token
準備創建一個資料夾並安裝套件:
1pip install discord.py
基礎bot.py在資料夾內新增bot.py檔案接著就來看如何建立機器人
123456789101112# 此區段一律放在整個檔案最開始,但import部分可依據需求修改import discordfrom discord.ext import commandsimport asyncio# 設定機器人可以做的事# Discord特殊規定,可以不用特別了解intents = discord.Intents.all()# 定義機器人物件bot = commands.Bot(command_prefix=">",intents = intents)
此處的command_prefix為指令前綴,也就是一般的文字指令, ...
你不是厭倦了,只是需要一段很長的休息
其實越長大,以前的遊戲就越少打開來玩了從新手什麼都不懂,到後來已經熟悉所有東西了那種新奇的感覺就消失了
Minecraft以前Minecraft可是我超愛的遊戲,每天放學就跟同學約幾點上線一起玩Hypixel後來還去報名營隊,直接變成指令大師
但是漸漸地就不太玩了,明明線上上課的時候還很喜歡
後來偶然遇到一個伺服器邀請我用資料包製作遊戲,重新開啟我對Minecraft的熱情我想,要回去一個可以自由創造的世界,還是需要一點小活動才可以
光遇想起來,光遇真的是很治癒的遊戲每一個地方都超美,會考那時候每天都在考複習卷,心情都不太好,但是晚上打開光遇就感覺被治癒了
中間也認識了很多人,感覺光遇讓緣分這件事具象化了,不管現在有沒有聯絡,我都很珍惜那時候的相處
後來也是慢慢就退出了最近好像要出新季節了,我看看要不要回坑吧
其實這些遊戲我不是厭倦了,只是需要一段很長的休息然後就會重新開始一段很長的旅程
Python Html剖析器簡單應用
今天在寫Discord機器人時需要取得rss feed內容本來是一帆風順的,結果feed的描述竟然是html標籤,沒有接觸過html的我就研究了一番python內建的剖析器
記下來以免我以後忘了 .w.
建立類別剖析器需要繼承類別後再修改內部內容定義好函數後,使用時會自動呼叫函式來處理
1234567891011121314from html.parser import HTMLParserclass MyParser(HTMLParser): def __init__(self): super().__init__() def handle_starttag(self,tag,attr) -> None: print(tag) def handle_endtag(self,tag) -> None: print(tag) def handle_data(self,data) -> None: print(data)
handle_starttag當遇到開始的標籤時,會呼叫這個函式來處理 ...