iT邦幫忙

2023 iThome 鐵人賽

DAY 14
0

1.功能說明

我結合了前兩天的功能做出了一個可以實現當一位伺服器成員被警告後就會被ban的功能

2.程式碼

from discord.ext import commands
import discord

intents = discord.Intents.all()



bot = commands.Bot(command_prefix='!', intents=intents)

warns = {} # 警告計數

@bot.command()
@commands.has_permissions(ban_members=True)
async def warn(ctx, member: commands.MemberConverter):


    if member.id not in warns:
        warns[member.id] = 1 
    else:
        warns[member.id] += 1

    await ctx.send(f"{member.name} 已獲得 {warns[member.id]} 次警告!")

    if warns[member.id] == 3:
        await member.ban()
        await ctx.send(f"{member.name} 因達到3次警告而被ban!")



bot.run(‘token’)

3.程式碼說明

  1. 導入需要的 discord.py 模块
  2. 創建 bot 實例,並設置命令前綴 prefix
  3. 使用字典(註一) warns 記錄每個用戶的警告次數
  4. 定義 !warn 命令,並檢查使用此於法的使用者是否有禁言权限
  5. 通過 MemberConverter 自動將文字轉換為 Member 對象
  6. 檢查該用戶是否在字典中,如果不在则添加進去,並將警告次數設為 1,這隻程式是使用id作為鍵值
  7. 如果已經在字典中,則警告次數 +1
  8. 發送警告消息給用戶
  9. 檢查警告次數是否達到 3 次,如果是,調用 ban() 方法禁言該用戶
  10. 發送禁言成功的提示

4.執行結果

https://ithelp.ithome.com.tw/upload/images/20230917/20161116sByvImyLEH.png

https://ithelp.ithome.com.tw/upload/images/20230917/201611160Qj6d0qb4E.png

註一:
dicts 在Python中是一種字典(dict)類型的數據結構,與字符串(str)不同,具有以下特點:

  1. 字典存儲的是鍵值對(key-value pairs)的數據
  2. 鍵(key)可以是字符串,值(value)可以是任意類型
  3. 可以使用鍵快速查找對應的值,如:dicts[key]
  4. dictionary 是無序的
  5. 定義語法為:
    dicts = {
    'key1': 'value1',
    'key2': 'value2'
    }

上一篇
[Day13]ban成員
下一篇
[Day15]禁言成員
系列文
使用discord.py開發自己的機器人30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言