# 10/3 壹籌延伸 - Discord Bot :::info 時間:112/10/03 19:30 ~ 21:45 地點:線上會議 (Discord) 參與:StarLeisure、xiaojie4082、wei ![](https://hackmd.io/_uploads/HkRSs5txp.png) ::: ## 建立 Discord Bot 1. https://discord.com/developers/applications 2. New Applications -> 輸入應用名稱 3. Bot -> Reset TOKEN -> 複製 TOKEN(之後會用到) 4. 機器人設定 -> OAuth2 ![](https://hackmd.io/_uploads/SJMKA_FgT.png) 5. OAuth2 -> URL Generator -> 調整權限 -> 生成邀請連結 ![](https://hackmd.io/_uploads/HkiUyFFlp.png) ![](https://hackmd.io/_uploads/ByndJFFx6.png) 6. 邀請機器人至 Discord ![](https://hackmd.io/_uploads/SJ1TyYKxT.png) ## Discord Bot - Python 3.10 - https://www.python.org/ftp/python/3.10.11/python-3.10.11-amd64.exe - pip 23.2.1 ```python! # 安裝 pip curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python get-pip.py # 更新 pip python.exe -m pip install --upgrade pip ``` - 安裝套件 - discord.py - python-dotenv - python-time ```python! # 安裝套件 pip install 套件 ``` ### 第一個程式 - .env ``` DISCORD_TOKEN = 剛剛複製的 TOKEN ``` - main.py ```python! # 匯入 time 模組 import time # 匯入讀取 .env 檔案的相關套件 import os from dotenv import load_dotenv # 匯入 discord.py 套件 import discord from discord.ext import commands # 創建 Discord intents 物件並啟用訊息內容 (message_content) 的接收 intents = discord.Intents.default() intents.message_content = True # 載入環境變數從 .env 檔案中 load_dotenv() # 獲取 Discord 機器人令牌從環境變數 bot_token = os.getenv("DISCORD_TOKEN") # 設置命令前綴和 intents bot = commands.Bot(command_prefix='!', intents=intents) @bot.command() async def ping(ctx): start = time.time() message = await ctx.send('pong...') end = time.time() latency = (end - start) * 1000 await message.edit(content=f'{latency:.1f} ms') bot.run(bot_token) ``` > 前綴:& [name=puipuixoxo] > 前綴:$ [name=StarLeisure] ## 開發風格 - 善用註解 - 排版請用 Tab - 開發新功能請建立 功能.py 檔 - 使用函式讀取及回傳資料 ```python! def function_name(variable_name: int): data = variable_name + ... return data ``` - 主程式 ```python from 功能(功能.py) import 函式 ``` ## 下次討論事項 - 功能開發設計 - Python 爬蟲教學 - 講解選課相關指令 ###### tags: `討論共筆`