前往
大廳
主題

[教學] Discord Bot Twitter推文通知 - 免費部署到雲端伺服器

樁燃 | 2023-10-09 22:26:47 | 巴幣 216 | 人氣 3450

自從Twitter執行長Musk修改api後,各大Discord伺服器的Twitter轉發bot應該都無法繼續運作,除非付費,但我們還是有免費的方法可以用,感謝Github上大神弄得逆向工程 tweety-ns,接下來介紹使用該逆向工程製作的discord bot。

相關更新



Tweetcord


Github: https://github.com/Yuuzi261/Tweetcord
原理: 每隔一定的時間就去抓Twitter的通知,如果發現設置的轉推對像有新的推文,那就會即時發送到discord頻道。


設置


前置作業:

    1. 沒fly.io帳號的先去 fly.io 辦一個,需要綁定信用卡才能有免費的額度可以使用,以下圖片是免費
       額度的詳細介紹,是足以完全支撐該Tweetcord bot的運作,不需要擔心被收費(除非政策改變)。


    2. 需要一個discord bot token,以下連接有關於獲取token的教學和一些關於discord bot的常識。

    3. 要取得你twitter帳號的auth_token,登入twitter後找到以下圖片裡的cookie name,它的
         value 就是我們需要的,看你是要用插件還是其他方法都行,能找到該cookie就好。
        

step 1

     電腦按下 win+R,輸入 cmd 會跳出命令提示字元,接著再輸入以下指令安裝 flyctl,並且等待安裝完成。
-> pwsh -Command "iwr https://fly.io/install.ps1 -useb | iex"
(如果出現 'pwsh' 不是內部或外部命令、可執行的程式或批次檔 錯誤的話,把前面的pwsh改成powershell就可以了)

step 2
     在 cmd 輸入 flyctl auth login 登入你的 fly.io 帳戶。

step 3
    打開 https://github.com/Yuuzi261/Tweetcord/releases 挑最新的版本下載 Source code (zip),並解壓縮,裡面有2個檔案可以刪掉,分別是 .gitignore 、 LICENSE。

step 4
    建立Dockerfile:
          新增一個叫 Dockerfile 的檔案,把以下內容複製貼到進去(記事本編輯即可)。
               FROM python:3.10.9
               WORKDIR /bot
               COPY requirements.txt /bot/
               RUN pip install -r requirements.txt
               COPY . /bot/
               CMD python bot.py
          完成後如下圖:
            
    編輯config.yml(記事本編輯即可):
           以下是每一行參數的解釋,可以直接用預設,等熟悉了再回來更改。

step 5

    確保目前的路徑是在 tweetcord 資料夾的位置,然後在上方輸入 cmd 按下 Enter 鍵就會出現命令提示字元。

    輸入 fly launch,app name 你想要取什麼都行。

    取完 app name 後按 Enter 繼續執行,選取要架設的伺服器位置,沒特別偏好就隨便挑一個,挑完 Enter 繼續執行。

     然後會遇到3個問題,全部都輸入 N 就好,之後確認一下 tweetcord 資料夾內有沒有一個名為 fly.toml 的檔案,有的話就繼續下一步。

step 6

    cmd 裡面輸入 flyctl volumes create <volume_name> -a <your_app_name><volume_name> 隨便取個名子就行,然後 <your_app_name> 是輸入剛剛上一步驟的 app name,最後的結果如下圖。這一步驟主要是以後更新bot的時候,防止儲存資料的database不會被重置。

step 7

    來到 fly.io 的 DashBoard 就會看到剛剛創建的 app。

      點進去後在右列清單找到 Secrets,然後按下 New Secret 按鈕,我們要創建2個 Secrets,Name 的部分必須完全跟圖片上一樣,然後 Secret 分別是輸入你的 discord bot token 和 Twitter 的 auth_token。

step 8

    打開 tweetcord 資料夾內的 fly.toml 檔案進行編輯(記事本編輯即可),將我選取起來的部分刪除。

    把下方的內容都貼到 fly.toml,source 是輸入你的 volume_name,其他都不需要改動
        [env]
         DATA_PATH = "/data/"    
      [mounts]    
         source = "input_your_volume_name"    
         destination = "/data"
    最後結果如下圖:

final step

    回到 cmd 輸入 flyctl deploy ,這個指令會開始部署 bot,如果以後常常更新 bot 的話,一樣是用這個指令部署,第一次使用該指令的話會要點時間。
   
   看到這個就代表你至少部署成功了,但是還不能確定bot是不是成功啟動,連接點進去可以到看bot在後台運行的狀況。

    這樣代表機器人已經設置成功了,回到discord看,bot也已經顯示在線。

    最後就是用 slash command 設置的部份了,指令部份的相關說明都在以下連接裡面。


結語


    步驟應該算是很完整了,有不清楚的部份或是跟discord bot相關的問題都可以問,我會盡快回覆。祝大家都可以順利完成自己的 discord bot 部署。
   題外話,由於該 discord bot 的架構是 cog,所以可以很輕易地擴充其他功能或是指令,有興趣的可以自行研究。



創作回應

richard
做到最後一步 顯示如圖,請問是做錯了甚麼呢?https://truth.bahamut.com.tw/s01/202403/de04f8b5905d8ea605e05937ac370de3.PNG
2024-03-03 18:47:47
richard
Error: Process group 'app' needs volumes with name 'tweet_data' to fullfill mounts defined in fly.toml; Run `fly volume create tweet_data -r REGION -n COUNT` for the following regions and counts: nrt=2
2024-03-03 18:47:56
樁燃
可能step 6你app name輸入錯誤?
2024-03-03 19:47:14
樁燃
他要你現在輸入該指令:
fly volume create tweet_data -r nrt -n 2
2024-03-03 19:48:19
richard
剛發現問題,是我的fly.toml的APP名字打成另一個
2024-03-03 19:56:14
楔六葉
請問機器人是不是無法 add 自己 目前 add 自己的推特後程式會直接報錯 目前是用 0.4 版本去 deploy 的https://truth.bahamut.com.tw/s01/202403/1aa618d0cf137b3d5dcae4572bbd2378.JPG
2024-03-17 03:37:47
樁燃
沒辦法在自己的帳號裡面追蹤自己,twitter本來就沒有這功能啊
2024-03-17 13:52:21
姊姊大人乄
想詢問剛開的新帳號拿來追蹤會有問題嗎?機器人有成功運行,同時看帳號上也有去跟隨要轉發的帳號,但是發文後小鈴鐺裡面沒有通知,確定追蹤的帳號有開啟跟隨跟小鈴鐺通知。
2024-04-11 00:53:40
樁燃
那是twitter自己的問題,可能新帳號要有一些活動才會開始有通知?
2024-04-11 02:02:48

更多創作