Skip to content

Latest commit

 

History

History
268 lines (181 loc) · 9.37 KB

README_zh.md

File metadata and controls

268 lines (181 loc) · 9.37 KB

LOGO

Tweetcord

Discord的Twitter通知機器人

English | 繁體中文

📝簡介

Tweetcord是一個Discord機器人,它使用tweety-ns將指定Twitter用戶的即時推文更新傳送到你的Discord伺服器。只需設置想要關注的Twitter用戶和Discord頻道,Tweetcord就會自動將推文轉發到指定頻道,確保你不會錯過重要的更新。🐦

✨功能

截圖

👇每當關注的用戶發布新推文時,你的伺服器也會收到通知。

指令

👉 /add notifier username channel | mention type media_type account_used

參數 類型 描述
username str 你想要開啟通知的Twitter用戶的用戶名
channel discord.TextChannel 機器人發送通知的頻道
mention discord.Role 通知時提及的身分組
type str 設定是否啟用轉推和引用的通知
media_type str 設定是否啟用包含多媒體的通知,或僅啟用包含多媒體的通知
account_used str 用來追蹤用戶推文的Twitter客戶端

👉 /remove notifier username channel

參數 類型 描述
username str 你想要關閉通知的Twitter用戶的用戶名
channel discord.TextChannel 設置為發送通知的頻道

👉 /list users

  • 列出所有當前伺服器開啟通知的Twitter用戶

👉 /sync

  • 將新Twitter帳戶的通知與資料庫同步。如果你更改了bot使用的Twitter帳戶,請使用此指令

👉 /customize message username channel | default

參數 類型 描述
username str 你想要設定自定義通知訊息的Twitter用戶的用戶名
channel discord.TextChannel 機器人發送通知的頻道
default bool 是否要還原至預設的設定 (預設是false)

自定義通知訊息為 f-string 格式,目前支援4種特別的變數可供使用,將在下面說明:

  • {action} : 發文者的動作,包括 tweetedretweetedquoted (暫不支持中文)
  • {author} : 發文者的顯示名稱
  • {mention} : 發送到discord時提及的身份組
  • {url} : 推文的連結

以預設通知為例,如果將訊息自定義為以下格式(支援Discord的markdown格式):

{mention}**{author}** just {action} here: 
{url}

則會在推文發送時會以此格式發出通知(這裡舉一個實際例子):

@Ping_SubTweet ナチョネコ just tweeted here: 
https://twitter.com/nyachodayo/status/1869000108697960952

📥安裝

在運行機器人之前,你需要安裝必要的模組。

pip install -r requirements.txt

⚡使用

📢本教學適用於0.5或更高版本,舊版設定請參考各個歷史版本的README。

1. 創建並配置.env文件

BOT_TOKEN=YourDiscordBotToken
TWITTER_TOKEN=NameForYourTwitterToken:YourTwitterAccountAuthToken
DATA_PATH=./data

Note

這裡的 NameForYourTwitterToken 是可以隨意定義的,僅用來作為輸入指令時指定帳戶用的代號,不一定要和Twitter帳號名稱一致。

範例

BOT_TOKEN=FAKE1234567890ABCDEFGHIJKLMNO.PQRSTUVWXYZ1234567890.ABCDEFGHIJKLMNOPQRSTUVWXYZ123456
TWITTER_TOKEN=Account1:12345abcde67890fghij12345klmnop67890qrstuv,Account2:abcdef123456ghijkl7890mnopqrst123456uvwx
DATA_PATH=./data

你可以從cookies中獲取你的token,或是你可以探索其他獲取它的方法。

2. 配置configs.yml文件

建立 configs.yml 並將 configs.example.yml 的內容複製過去,並依照自己的喜好編輯它。

Important

這裡的所有配置說明和最新版本同步,舊版用戶請參考舊版README。

基本

參數 描述 限制
prefix 機器人命令的前綴,只會對前綴指令生效。 無,但建議選擇簡單且易於識別的前綴,並避免使用空字串。
activity_name 機器人顯示的活動名稱。 無。
activity_type 機器人顯示的活動類型。 僅限 playingstreaminglisteningwatchingcompeting
users_list_pagination_size list users 指令的分頁大小。 只接受整數,不宜使用過大或過小的值。
users_list_page_counter_position list users 指令的分頁計數器位置。 僅限 titlefooter

自定義活動名稱為 f-string 格式,目前支援1種特別的變數可供使用,將在下面說明:

  • {count} : 目前被機器人追蹤的使用者數量,會即時更新

計時器 & 計數器

參數 描述 單位
tweets_check_period 檢查推文的頻率,不建議將此值設置得太低,以避免速率限制。預設值:10,安全值:18(為什麼是這個數值?),不推薦低於 10。如果Tweetcord控制的帳號和你平常在使用的帳號相同,請適當提高這個數值以避免速率限制。
tweets_updater_retry_delay 當Tweets Updater遇到異常時的重試間隔。 分鐘
tasks_monitor_check_period 檢查每個任務是否正常運行的間隔,如果某個任務停止了,嘗試重新啟動。 分鐘
tasks_monitor_log_period 將當前運行中的任務列表輸出到執行日誌的間隔。 小時
auth_max_attempts 登入Twitter帳號時的最大嘗試次數,失敗超過此次數將會強制停止機器人運行。

控制帳戶行為

參數 描述
auto_change_client 如果為現有使用者指定新用戶端,則自動使用新用戶端對該使用者進行追蹤。
auto_turn_off_notification 如果某個使用者的所有通知都已停用,決定是否取消追蹤該使用者。
auto_unfollow 如果某個使用者的所有通知都已停用,決定是否停用該使用者的通知(Twitter端)。

資料庫

參數 描述
auto_repair_mismatched_clients 當資料庫中含有環境變數未定義的client_used的話,是否自動使用目前環境變數所定義的第一個客戶端取代這些無效的客戶端名稱。

嵌入內容風格

參數 描述
type 決定嵌入內容的類型,支援的類型有: built_in / fx_twitter
built_in:
參數 描述
fx_image 當有多張圖片時是否使用FxTwitter的組合圖片,對於無法顯示多張圖片嵌入的iOS系統友善。
video_link_button 即將推出
footer_logo 即將推出
fx_twitter:
參數 描述
domain_name 傳送推文連結時的域名,可以是 fxtwitterfixupx
original_url_button 即將推出

訊息

參數 描述
default_message 全域設定預設的訊息格式,格式和自定義訊息相同,使用f-字串並支援4個特殊變數。相關細節請參考指令

3. 運行機器人並邀請至你的伺服器

python bot.py

🔧機器人權限設定 2147666944

  • 讀取訊息(Read Messages/View Channels)
  • 發送訊息(Send Messages)
  • 嵌入連結(Embed Links)
  • 附加檔案(Attach Files)
  • 提及 @everyone、@here 和所有身分組(Mention Everyone)
  • 使用應用程式命令(Use Slash Commands)

Note

如果想將機器人架到伺服器上,這裡推薦一個基本免費的服務:fly.io(更新:fly.io已停止向新用戶提供免費的方案)

Tip

或是你可以試試這個由台灣學生提供的虛擬主機服務: FreeServer

⚙️如果你使用fly.io的話你可能會需要的一些配置檔案
  • dockerfile
FROM python:3.11.11
WORKDIR /bot
COPY requirements.txt /bot/
RUN pip install -r requirements.txt
COPY . /bot/
CMD python bot.py
  • fly.toml
app = "你的APP名稱"
primary_region = "你的APP地區"

[env]
  DATA_PATH = "/data"

[mounts]
  source = "你的APP的VOLUME名稱"
  destination = "/data"

4. 玩得開心

現在你可以回到Discord,並使用 /add notifier 指令來設置你想要接收更新的Twitter用戶!

💪貢獻者

感謝所有貢獻者。

這個專案也受益於為我們提供標誌的藝術家的創意貢獻。

LOGO