---
# System prepended metadata

title: 10/3 壹籌延伸 - Discord Bot

---

# 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: `討論共筆`