Bỏ để qua phần nội dung

Cách sử dụng API Discord với Python: Hướng dẫn chuyên sâu

API Discord cung cấp vô số cơ hội cho các nhà phát triển tích hợp với Discord, xây dựng bot, tự động hóa máy chủ và nâng cao cộng đồng bằng Python. Trong hướng dẫn toàn diện hơn 2000 từ này, chúng tôi sẽ đi sâu vào các khả năng, điều kiện tiên quyết, xác thực, điểm cuối, thư viện, dự án mẫu và kỹ thuật nâng cao của API Discord – trang bị cho bạn mọi thứ bạn cần biết để bắt đầu.

Tại sao nên sử dụng API Discord với Python?

Trước khi đi sâu vào mã, cần nêu bật một số điều thú vị mà các nhà phát triển đã xây dựng bằng API Python Discord:

  • mee6 – Một trong những bot Discord phổ biến nhất với hơn 250 triệu người dùng. Cung cấp kiểm duyệt, thăng cấp, âm nhạc, Twitch, Reddit và các tích hợp khác.

  • YAGDB – Bot có nhiều tính năng với hơn 100 lệnh để kiểm duyệt, ghi nhật ký, quản lý vai trò, nhắc nhở, v.v. Được sử dụng trên hơn 600,000 máy chủ Discord.

  • bất hòa.py – Thư viện trình bao bọc API nổi bật đã hỗ trợ nhiều bot Discord sớm nhất trong Python. Cung cấp sự trừu tượng hóa dễ dàng cho bot và tích hợp.

  • ngắt dòng – Bot phát nhạc có tính năng xếp hàng danh sách phát, hỗ trợ YouTube/Twitch và các bộ lọc âm thanh như tăng âm trầm.

  • discordbot.py – Bot tận dụng công nghệ máy học để tự động kiểm duyệt nội dung độc hại và thư rác. Hiển thị tích hợp AI.

  • phản hồi bất hòa – Bot phản hồi của khách hàng cho phép người dùng gửi đánh giá, xếp hạng và phản hồi qua Discord DM một cách thuận tiện.

Và đây chỉ là một số ví dụ – các nhà phát triển đã tích hợp Discord theo những cách sáng tạo với các nền tảng từ Reddit và GitHub đến các ứng dụng như Spotify bằng cách sử dụng tính linh hoạt của Python.

Điều kiện tiên quyết để sử dụng API Discord

Trước khi đi sâu vào bất kỳ mã hóa nào, bạn sẽ muốn thực hiện các bước tiên quyết sau:

Tạo tài khoản Discord

  • Rõ ràng là cần có tài khoản Discord – đăng ký miễn phí tại bất hòa.com nếu bạn không có.

Tạo máy chủ Discord

  • Tạo một máy chủ trong Discord để thử nghiệm. Điều này cung cấp cho bạn quyền truy cập quản trị viên đầy đủ thay vì dựa vào máy chủ khác.

  • Đối với các bot công khai/sản xuất, sau này bạn sẽ muốn tạo liên kết mời để thêm vào các máy chủ khác.

Bật Chế độ Nhà phát triển

  • Trong Discord, đi tới Cài đặt người dùng > Nâng cao > Chế độ nhà phát triển để mở khóa các tùy chọn bổ sung.

Cài đặt Python

  • Đã cài đặt Python và sẵn sàng viết mã. API Discord hỗ trợ Python 3.8 trở lên.

  • Tùy chọn thiết lập môi trường ảo để tách biệt các phần phụ thuộc.

Lấy thông tin xác thực API Discord

Để thực hiện lệnh gọi API, chúng tôi cần tạo thông tin xác thực:

Tạo một ứng dụng Discord

Tạo tài khoản Bot

  • Trong tab Bot trong ứng dụng của bạn, hãy thêm tài khoản bot mới.

  • Bạn có thể tùy chỉnh tên người dùng, hình đại diện, v.v.

Sao chép mã thông báo

  • Tiết lộ và sao chép mã thông báo của bot trong tab Bot – mã thông báo này được sử dụng để xác thực các yêu cầu API.

  • Giữ an toàn như mật khẩu. Bất kỳ ai có mã thông báo đều có thể điều khiển bot của bạn.

Nhận ID kênh

  • Trong máy chủ Discord của bạn, nhấp chuột phải vào kênh và chọn "Sao chép ID" để lấy ID kênh.

  • Chúng tôi sẽ sử dụng ID kênh để chỉ định nơi gửi tin nhắn.

Xác thực bằng API Discord

Với mã thông báo và ID kênh, giờ đây chúng tôi có thể xác thực. Có hai cách tiếp cận:

Mã thông báo Bot

  • Được sử dụng cho các tài khoản bot để xác thực với đầy đủ quyền.

  • Chuyển mã thông báo trong Authorization tiêu đề:

headers = {
    ‘Authorization‘: ‘Bot ‘ + bot_token
}

Mã thông báo người dùng

  • Có thể được sử dụng cho tài khoản người dùng nhưng có quyền hạn chế.

  • Được tạo trong tab OAuth2 trong ứng dụng phát triển Discord của bạn.

  • Xác thực tương tự:

headers = {
    ‘Authorization‘: ‘Bearer ‘ + user_token
} 

Mã thông báo bot phổ biến hơn để truy cập API đầy đủ. Mã thông báo người dùng cho phép tương tác thay mặt người dùng.

Điểm cuối API Discord phổ biến

API Discord hiển thị một số điểm cuối cho các thực thể khác nhau như kênh, tin nhắn, người dùng, v.v.

Một số điểm cuối phổ biến bao gồm:

  • Các kênh/channels/{channel.id}
  • Tin nhắn/channels/{channel.id}/messages
  • Phản ứng/channels/{channel.id}/messages/{message.id}/reactions
  • Guild/guilds/{guild.id}
  • Các thành viên/guilds/{guild.id}/members

Chúng tôi thực hiện các hoạt động như gửi tin nhắn bằng cách đưa ra yêu cầu tới các điểm cuối này.

Thư viện trình bao bọc API Discord

Mặc dù chúng ta có thể gọi trực tiếp API thô, nhưng các thư viện trình bao bọc Python có thể đơn giản hóa mọi thứ:

  • bất hòa.py – Thư viện phổ biến nhất với thiết kế hướng đối tượng trực quan.
  • xua đuổi con rắn – Một nhánh của discord.py được cập nhật để có những thay đổi API mới nhất.
  • hikari – Trình bao bọc tập trung vào hiệu suất tập trung vào tốc độ.
  • dây tiếp theo – Trình bao bọc API không đồng bộ được xây dựng cho Python 3.10+.

Chúng cung cấp khả năng tóm tắt dễ dàng cho bot, lệnh, sự kiện, v.v., tiết kiệm thời gian phát triển so với các yêu cầu thô.

Gửi tin nhắn

Hãy xem một số mã để gửi tin nhắn bằng cách sử dụng /channels/{channel.id}/messages điểm cuối:

import requests

url = "https://discord.com/api/v9/channels/1234567890/messages" 

data = {"content": "Hello world!"}

headers = {
    "Authorization": "Bot OTI..." 
}

response = requests.post(url, headers=headers, json=data)

Chúng tôi sử dụng yêu cầu POST với content tải trọng cơ thể để gửi tin nhắn của chúng tôi.

Lấy tin nhắn

Để truy xuất tin nhắn, chúng tôi NHẬN từ cùng một điểm cuối và phân tích phản hồi:

response = requests.get(url, headers=headers)

json_data = response.json()

for message in json_data:
   print(message[‘content‘])

Phản hồi chứa một mảng các đối tượng thông báo mà chúng ta có thể lặp qua.

Chỉnh sửa tin nhắn

Để chỉnh sửa tin nhắn, chúng ta cần message.id giá trị và sử dụng yêu cầu PATCH:

message_id = "876543234567891234"

url = f"https://discord.com/api/v9/channels/{channel_id}/messages/{message_id}"

data = {"content": "New message contents!"}

response = requests.patch(url, headers=headers, json=data)

Phản ứng với tin nhắn

Chúng ta có thể phản ứng bằng cách sử dụng /reactions/{emoji}/@me điểm cuối:

url = f"https://discord.com/api/v9/channels/{channel_id}/messages/{message_id}/reactions/👍/@me"

response = requests.put(url, headers=headers)

Điều này thêm một phản ứng thích cho tin nhắn từ bot.

Xóa tin nhắn

Cuối cùng, chúng ta có thể xóa bằng yêu cầu DELETE:

url = f"https://discord.com/api/v9/channels/{channel_id}/messages/{message_id}"

response = requests.delete(url, headers=headers) 

Phần trên sẽ cung cấp cho bạn cái nhìn tổng quan về các hoạt động nhắn tin phổ biến. Bây giờ hãy thảo luận về cách làm việc với API WebSocket.

Tận dụng API WebSocket

API Discord cung cấp hai tùy chọn kết nối:

REST API – Được sử dụng cho hầu hết các hoạt động như gửi tin nhắn.

API WebSocket – Để nghe các sự kiện thời gian thực như tin nhắn.

WebSockets cho phép tạo các bot hướng sự kiện phản ứng với các sự kiện trực tiếp thay vì thăm dò API REST.

Ví dụ: đây là trình xử lý sự kiện on_message đơn giản:

import discord

class MyBot(discord.Client):

    async def on_ready(self):
       print(‘Logged in as {0}!‘.format(self.user))

    async def on_message(self, message):
        print(‘Message from {0.author}: {0.content}‘.format(message))

bot = MyBot()
bot.run(‘token‘)

Điều này sẽ phản hồi tin nhắn ngay lập tức thay vì chờ phản hồi cuộc gọi API.

Xử lý lỗi API

Khi gọi API, chúng ta nên xử lý lỗi một cách khéo léo:

try:
    response = requests.post(url, headers=headers, json=data)
    response.raise_for_status()
except requests.exceptions.HTTPError as err:
    print(err)
    print(response.text)

Một số lỗi phổ biến bao gồm:

  • 50001 – Thiếu quyền truy cập vào tài nguyên
  • 50035 – Nội dung yêu cầu không hợp lệ
  • 429 – Tỷ lệ giới hạn

Xem tài liệu để biết chi tiết về lỗi.

Xây dựng Bot Discord bằng Python

Hãy cùng xem qua một bot mẫu để thể hiện các khả năng cốt lõi:

Tính năng của Bot:

  • Gửi lời chào khi khởi động
  • Trả lời tin nhắn có chứa "trợ giúp"
  • Xóa tin nhắn có từ bị cấm
  • Thêm phản hồi biểu tượng cảm xúc phản ứng
  • Trả lời bằng hình ảnh/biểu tượng cảm xúc
# Imports and initialization

import os
import discord
from dotenv import load_dotenv

load_dotenv()
TOKEN = os.getenv(‘DISCORD_TOKEN‘)

intents = discord.Intents.default()
intents.message_content = True 
client = discord.Client(intents=intents)

# Event handlers

@client.event
async def on_ready():
   channel = client.get_channel(1234567890)  
   await channel.send("I‘m alive!")

@client.event
async def on_message(message):

   if "help" in message.content:
      await message.channel.send("Contact our support team for assistance!")

   elif check_for_banned_words(message.content):
      await message.delete()

   # Reactions   
   emojis = ["👍", "❤️"]

   for emoji in emojis: 
       await message.add_reaction(emoji)

# Run bot             
client.run(TOKEN)

Phần này giới thiệu một bot Discord đơn giản nhưng đầy đủ chức năng trong Python phản ứng với các sự kiện và lệnh.

Mẹo và thủ thuật API Discord nâng cao

Hãy hoàn thiện hướng dẫn này bằng một số mẹo chuyên nghiệp:

  • Sử dụng tính năng cạo thành viên với LISTENER ý định lấy ngày tham gia, nâng cao trạng thái, v.v. không có trong dữ liệu mặc định.

  • Tận dụng khả năng xử lý ngôn ngữ tự nhiên và AI như TensorFlow để kiểm duyệt tự động dựa trên ngữ nghĩa thông báo và từ khóa.

  • Lên lịch các quảng cáo, thông báo sinh lợi, v.v. bằng cách sử dụng công việc định kỳ hoặc công cụ lập lịch như APScheduler để có thời gian tối ưu.

  • Triển khai logic tùy chỉnh để bảo vệ bot của bạn khỏi bị lạm dụng như giới hạn tỷ lệ người dùng cá nhân.

  • Xây dựng trang tổng quan web bằng Flask hoặc FastAPI để điều khiển bot của bạn thông qua HTTP thay vì chỉ Discord.

  • Sử dụng đa luồng để song song hóa các tác vụ đòi hỏi tính toán chuyên sâu như tạo báo cáo phân tích.

  • Tạo các hàm trợ giúp và tóm tắt xung quanh các lệnh gọi API mà bạn sử dụng thường xuyên nhất.

Việc kết hợp một số khả năng nâng cao hơn này thực sự có thể tách bot của bạn ra khỏi đám đông.

Suy nghĩ cuối cùng về API Discord

API Discord mang đến những cơ hội tuyệt vời để xây dựng các bot và công cụ giúp nâng cao trải nghiệm Discord cho cộng đồng và máy chủ. Kết hợp với tính linh hoạt của Python, các nhà phát triển có nền tảng tuyệt vời để mang lại sự tích hợp sáng tạo và tự động hóa cho hơn 100 triệu người dùng của Discord.

Tôi hy vọng bài viết chuyên sâu hơn 2000 từ này sẽ trang bị cho bạn các điều kiện tiên quyết, xác thực, kiến ​​thức điểm cuối, ví dụ và kỹ thuật cần thiết để bắt đầu tận dụng API Discord trong các dự án của riêng bạn. Các cộng đồng sử dụng sáng tạo của bạn sẽ cảm ơn bạn!

Một số tài nguyên cuối cùng đáng để khám phá khi bạn tiếp tục hành trình của mình:

Bây giờ - hãy tiếp tục và viết mã thứ gì đó tuyệt vời! Cộng đồng Python Discord rất nóng lòng muốn xem những gì bạn xây dựng được.

Tham gia vào cuộc đối thoại

Chúng tôi sẽ không công khai email của bạn. Các ô đánh dấu * là bắt buộc *