Mã chúc mừng sinh nhật con trăn
Trong một thế giới mà trò chơi điện tử rất quan trọng đối với rất nhiều người, giao tiếp và cộng đồng xung quanh trò chơi là rất quan trọng. Discord cung cấp cả hai thứ đó và hơn thế nữa trong một gói được thiết kế tốt. Trong hướng dẫn này, bạn sẽ học cách tạo bot Discord bằng Python để bạn có thể tận dụng tối đa nền tảng tuyệt vời này Show
Đến cuối bài viết này, bạn sẽ học được
Bạn sẽ bắt đầu bằng cách tìm hiểu Discord là gì và tại sao nó lại có giá trị Bất hòa là gì?Discord là một nền tảng giao tiếp bằng giọng nói và văn bản dành cho game thủ Người chơi, người phát trực tuyến và nhà phát triển sử dụng Discord để thảo luận về trò chơi, trả lời câu hỏi, trò chuyện trong khi họ chơi, v.v. Nó thậm chí còn có một cửa hàng trò chơi, hoàn chỉnh với các bài đánh giá quan trọng và dịch vụ đăng ký. Nó gần như là một cửa cho cộng đồng chơi game Mặc dù có nhiều thứ bạn có thể xây dựng bằng cách sử dụng API của Discord, hướng dẫn này sẽ tập trung vào một kết quả học tập cụ thể. cách tạo bot Discord bằng Python Loại bỏ các quảng cáoBot là gì?Discord ngày càng phổ biến. Do đó, các quy trình tự động, chẳng hạn như cấm người dùng không phù hợp và phản hồi yêu cầu của người dùng là rất quan trọng để cộng đồng phát triển và lớn mạnh Các chương trình tự động trông giống như người dùng và tự động phản hồi các sự kiện và lệnh trên Discord được gọi là người dùng bot. Người dùng bot Discord (hoặc chỉ bot) có các ứng dụng gần như không giới hạn Ví dụ: giả sử bạn đang quản lý một bang hội Discord mới và một người dùng tham gia lần đầu tiên. Rất vui, bạn có thể liên hệ trực tiếp với người dùng đó và chào mừng họ đến với cộng đồng của bạn. Bạn cũng có thể nói với họ về các kênh của bạn hoặc yêu cầu họ giới thiệu về bản thân Người dùng cảm thấy được chào đón và thích các cuộc thảo luận diễn ra trong bang hội của bạn và đến lượt họ, họ sẽ mời bạn bè Theo thời gian, cộng đồng của bạn phát triển lớn đến mức không còn khả thi để tiếp cận trực tiếp với từng thành viên mới, nhưng bạn vẫn muốn gửi cho họ thứ gì đó để công nhận họ là thành viên mới của bang hội Với bot, có thể tự động phản ứng với thành viên mới gia nhập bang hội của bạn. Bạn thậm chí có thể tùy chỉnh hành vi của nó dựa trên ngữ cảnh và kiểm soát cách nó tương tác với từng người dùng mới Điều này thật tuyệt, nhưng đó chỉ là một ví dụ nhỏ về cách bot có thể hữu ích. Có rất nhiều cơ hội để bạn sáng tạo với bot, một khi bạn biết cách tạo ra chúng Ghi chú. Mặc dù Discord cho phép bạn tạo các bot xử lý giao tiếp bằng giọng nói, nhưng bài viết này sẽ tập trung vào khía cạnh văn bản của dịch vụ Có hai bước chính khi bạn tạo bot
Trong phần tiếp theo, bạn sẽ tìm hiểu cách tạo bot Discord trong Cổng thông tin dành cho nhà phát triển của Discord Cách tạo Bot Discord trong Cổng thông tin dành cho nhà phát triểnTrước khi bạn có thể đi sâu vào bất kỳ mã Python nào để xử lý các sự kiện và tạo tự động hóa thú vị, trước tiên bạn cần tạo một vài thành phần Discord
Bạn sẽ tìm hiểu thêm về từng phần trong các phần sau Khi bạn đã tạo tất cả các thành phần này, bạn sẽ liên kết chúng lại với nhau bằng cách đăng ký bot của mình với bang hội của bạn Bạn có thể bắt đầu bằng cách truy cập Cổng thông tin dành cho nhà phát triển của Discord Tạo tài khoản DiscordĐiều đầu tiên bạn sẽ thấy là một trang đích nơi bạn sẽ cần đăng nhập, nếu bạn có tài khoản hiện có hoặc tạo tài khoản mới Nếu bạn cần tạo tài khoản mới thì nhấn vào nút Đăng ký bên dưới Đăng nhập và nhập thông tin tài khoản Quan trọng. Bạn sẽ cần xác minh email của mình trước khi có thể tiếp tục Sau khi hoàn tất, bạn sẽ được chuyển hướng đến trang chủ Cổng thông tin dành cho nhà phát triển, nơi bạn sẽ tạo ứng dụng của mình Loại bỏ các quảng cáoTạo một ứng dụngMột ứng dụng cho phép bạn tương tác với API của Discord bằng cách cung cấp mã thông báo xác thực, chỉ định quyền, v.v. Để tạo một ứng dụng mới, chọn Ứng dụng mới Tiếp theo, bạn sẽ được nhắc đặt tên cho ứng dụng của mình. Chọn tên và nhấp vào Tạo Xin chúc mừng. Bạn đã tạo một ứng dụng Discord. Trên màn hình kết quả, bạn có thể xem thông tin về ứng dụng của mình Hãy nhớ rằng bất kỳ chương trình nào tương tác với API Discord đều yêu cầu ứng dụng Discord, không chỉ bot. Các API liên quan đến bot chỉ là một tập hợp con trong tổng số giao diện của Discord Tuy nhiên, vì hướng dẫn này là về cách tạo bot Discord, hãy điều hướng đến tab Bot trên danh sách điều hướng bên trái Tạo một BotNhư bạn đã tìm hiểu trong các phần trước, người dùng bot là người lắng nghe và tự động phản ứng với các sự kiện và lệnh nhất định trên Discord Để mã của bạn thực sự được hiển thị trên Discord, bạn sẽ cần tạo người dùng bot. Để làm như vậy, hãy chọn Thêm Bot Khi bạn xác nhận rằng bạn muốn thêm bot vào ứng dụng của mình, bạn sẽ thấy người dùng bot mới trong cổng thông tin Lưu ý rằng, theo mặc định, người dùng bot của bạn sẽ kế thừa tên ứng dụng của bạn. Thay vào đó, hãy cập nhật tên người dùng thành thứ gì đó giống bot hơn, chẳng hạn như 7 và Lưu thay đổiBây giờ, bot đã sẵn sàng hoạt động, nhưng đến đâu? Người dùng bot sẽ không hữu ích nếu nó không tương tác với người dùng khác. Tiếp theo, bạn sẽ tạo bang hội để bot của bạn có thể tương tác với những người dùng khác Loại bỏ các quảng cáoTạo bang hộiBang hội (hoặc máy chủ, như thường được gọi trong giao diện người dùng của Discord) là một nhóm kênh cụ thể nơi người dùng tụ tập để trò chuyện Ghi chú. Mặc dù bang hội và máy chủ có thể hoán đổi cho nhau, bài viết này sẽ sử dụng thuật ngữ bang hội chủ yếu vì các API dính vào cùng một thuật ngữ. Thuật ngữ máy chủ sẽ chỉ được sử dụng khi đề cập đến bang hội trong giao diện người dùng đồ họa Ví dụ: giả sử bạn muốn tạo một không gian nơi người dùng có thể gặp nhau và nói về trò chơi mới nhất của bạn. Bạn sẽ bắt đầu bằng cách tạo bang hội. Sau đó, trong bang hội của bạn, bạn có thể có nhiều kênh, chẳng hạn như
Khi bạn đã tạo bang hội của mình, bạn sẽ mời những người dùng khác tham gia vào bang hội đó Vì vậy, để tạo bang hội, hãy truy cập trang chủ Discord của bạn Từ trang chủ này, bạn có thể xem và thêm bạn bè, tin nhắn trực tiếp và bang hội. Từ đây, chọn biểu tượng + ở phía bên trái của trang web để Thêm máy chủ Thao tác này sẽ hiển thị hai tùy chọn, Tạo máy chủ và Tham gia máy chủ. Trong trường hợp này, hãy chọn Tạo máy chủ và nhập tên cho bang hội của bạn Khi bạn đã hoàn thành việc tạo bang hội của mình, bạn sẽ có thể thấy người dùng ở phía bên tay phải và các kênh ở bên trái Bước cuối cùng trên Discord là đăng ký bot của bạn với bang hội mới của bạn Thêm Bot vào Bang hộiBot không thể chấp nhận lời mời như người dùng bình thường có thể. Thay vào đó, bạn sẽ thêm bot của mình bằng giao thức OAuth2 Chi tiết kỹ thuật. OAuth2 là một giao thức để xử lý ủy quyền, trong đó một dịch vụ có thể cấp cho ứng dụng khách quyền truy cập hạn chế dựa trên thông tin đăng nhập của ứng dụng và phạm vi được phép Để làm như vậy, hãy quay lại Cổng thông tin dành cho nhà phát triển và chọn trang OAuth2 từ điều hướng bên trái Từ cửa sổ này, bạn sẽ thấy Trình tạo URL OAuth2 Công cụ này tạo một URL ủy quyền truy cập API OAuth2 của Discord và cho phép truy cập API bằng thông tin đăng nhập của ứng dụng của bạn Trong trường hợp này, bạn sẽ muốn cấp cho người dùng bot của ứng dụng quyền truy cập vào API Discord bằng thông tin xác thực OAuth2 của ứng dụng của bạn Để thực hiện việc này, hãy cuộn xuống và chọn bot từ các tùy chọn PHẠM VI và Quản trị viên từ QUYỀN BOT Giờ đây, Discord đã tạo URL ủy quyền cho ứng dụng của bạn với phạm vi và quyền đã chọn từ chối trách nhiệm. Mặc dù chúng tôi đang sử dụng Quản trị viên cho các mục đích của hướng dẫn này, bạn nên càng chi tiết càng tốt khi cấp quyền trong một ứng dụng trong thế giới thực Chọn Sao chép bên cạnh URL được tạo cho bạn, dán nó vào trình duyệt của bạn và chọn bang hội của bạn từ các tùy chọn thả xuống Nhấp vào Ủy quyền và bạn đã hoàn tất Ghi chú. Bạn có thể nhận được reCAPTCHA trước khi tiếp tục. Nếu vậy, bạn sẽ cần phải chứng minh bạn là một con người Nếu bạn quay lại bang hội của mình, thì bạn sẽ thấy rằng bot đã được thêm vào Tóm lại, bạn đã tạo
Bây giờ, bạn đã biết cách tạo bot Discord bằng Cổng thông tin dành cho nhà phát triển. Tiếp theo là những điều thú vị. triển khai bot của bạn bằng Python Loại bỏ các quảng cáoCách tạo Bot Discord bằng PythonVì bạn đang học cách tạo bot Discord bằng Python, nên bạn sẽ sử dụng 8 8 là một thư viện Python triển khai triệt để các API của Discord theo cách hiệu quả và đậm chất Pythonic. Điều này bao gồm việc sử dụng triển khai Async IO của PythonBắt đầu bằng cách cài đặt 8 với 1
Bây giờ bạn đã cài đặt 8, bạn sẽ sử dụng nó để tạo kết nối đầu tiên với DiscordTạo kết nối bất hòaBước đầu tiên trong việc triển khai người dùng bot của bạn là tạo kết nối với Discord. Với 8, bạn làm điều này bằng cách tạo một thể hiện của 4
Một 4 là một đối tượng đại diện cho một kết nối với Discord. Một 4 xử lý các sự kiện, theo dõi trạng thái và thường tương tác với API DiscordTại đây, bạn đã tạo một 4 và triển khai trình xử lý sự kiện 8 của nó, trình xử lý sự kiện này khi 4 đã thiết lập kết nối với Discord và nó đã hoàn tất việc chuẩn bị dữ liệu mà Discord đã gửi, chẳng hạn như trạng thái đăng nhập, bang hội và dữ liệu kênh, Nói cách khác, 8 sẽ được gọi (và tin nhắn của bạn sẽ được in) sau khi 1 sẵn sàng cho hành động tiếp theo. Bạn sẽ tìm hiểu thêm về trình xử lý sự kiện sau trong bài viết nàyKhi bạn đang làm việc với các bí mật chẳng hạn như mã thông báo Discord của mình, bạn nên đọc mã đó vào chương trình của mình từ một biến môi trường. Sử dụng các biến môi trường giúp bạn
Mặc dù bạn có thể 2, nhưng một giải pháp dễ dàng hơn là lưu tệp 3 trên tất cả các máy sẽ chạy mã này. Điều này không chỉ dễ dàng hơn, vì bạn sẽ không phải 4 mã thông báo của mình mỗi khi xóa vỏ mà còn bảo vệ bạn khỏi việc lưu trữ bí mật trong lịch sử vỏ của bạnTạo một tệp có tên 3 trong cùng thư mục với 6
Bạn sẽ cần thay thế 7 bằng mã thông báo bot của mình. Bạn có thể nhận được mã này bằng cách quay lại trang Bot trên Cổng thông tin dành cho nhà phát triển và nhấp vào Sao chép trong phần TOKENNhìn lại mã 6, bạn sẽ thấy một thư viện có tên là 9. Thư viện này rất hữu ích để làm việc với các tệp 3. 1 tải các biến môi trường từ tệp 3 vào các biến môi trường của trình bao của bạn để bạn có thể sử dụng chúng trong mã của mìnhCài đặt 9 với 1
Cuối cùng, 5 chạy 4 của bạn bằng cách sử dụng mã thông báo bot của bạnBây giờ bạn đã thiết lập cả 6 và 3, bạn có thể chạy mã của mình
Tuyệt vời. 4 của bạn đã kết nối với Discord bằng mã thông báo bot của bạn. Trong phần tiếp theo, bạn sẽ xây dựng dựa trên 4 này bằng cách tương tác với nhiều API Discord hơnLoại bỏ các quảng cáoTương tác với Discord APISử dụng 4, bạn có quyền truy cập vào nhiều loại API của DiscordVí dụ: giả sử bạn muốn viết tên và số nhận dạng của bang hội mà bạn đã đăng ký người dùng bot của mình vào bảng điều khiển Trước tiên, bạn sẽ cần thêm một biến môi trường mới
Đừng quên rằng bạn sẽ cần thay thế hai phần giữ chỗ bằng các giá trị thực
Hãy nhớ rằng các cuộc gọi Discord 8 mà bạn đã sử dụng trước đây, sau khi 4 đã tạo kết nối và chuẩn bị dữ liệu. Vì vậy, bạn có thể dựa vào dữ liệu bang hội có sẵn bên trong 8
Tại đây, bạn đã lặp lại dữ liệu bang hội mà Discord đã gửi 1, cụ thể là 8. Sau đó, bạn tìm thấy hội có tên phù hợp và in ra một chuỗi được định dạng thành 9Ghi chú. Mặc dù tại thời điểm này, bạn có thể khá tự tin trong hướng dẫn rằng bot của bạn chỉ được kết nối với một bang hội duy nhất (vì vậy 0 sẽ đơn giản hơn), điều quan trọng là phải nhận ra rằng một người dùng bot có thể được kết nối với nhiều bang hộiDo đó, một giải pháp hiệu quả hơn là lặp qua 8 để tìm thứ bạn đang tìm kiếmChạy chương trình để xem kết quả
Tuyệt vời. Bạn có thể thấy tên bot của mình, tên máy chủ của bạn và số nhận dạng của máy chủ Một phần dữ liệu thú vị khác mà bạn có thể lấy từ bang hội là danh sách người dùng là thành viên của bang hội
Bằng cách lặp qua 2, bạn đã lấy tên của tất cả các thành viên của bang hội và in chúng bằng một chuỗi được định dạngKhi bạn chạy chương trình, ít nhất bạn sẽ thấy tên của tài khoản mà bạn đã tạo bang hội và tên của chính người dùng bot
Những ví dụ này hầu như không làm trầy xước bề mặt của các API có sẵn trên Discord, hãy chắc chắn kiểm tra chúng để xem tất cả những gì chúng cung cấp Tiếp theo, bạn sẽ tìm hiểu về một số hàm tiện ích và cách chúng có thể đơn giản hóa các ví dụ này Loại bỏ các quảng cáoSử dụng chức năng tiện íchHãy cùng xem lại ví dụ từ phần trước nơi bạn in tên và số nhận dạng của bang hội của bot
Bạn có thể làm sạch mã này bằng cách sử dụng một số chức năng tiện ích có sẵn trong 8là một tiện ích có thể cải thiện tính đơn giản và dễ đọc của mã này bằng cách thay thế vòng lặp 5 bằng một hàm trừu tượng, trực quan 1 6 nhận một hàm, được gọi là vị từ, xác định một số đặc điểm của phần tử trong iterable mà bạn đang tìm kiếm. Ở đây, bạn đã sử dụng một loại hàm ẩn danh cụ thể, được gọi là lambda, làm vị ngữTrong trường hợp này, bạn đang cố gắng tìm bang hội có cùng tên với tên mà bạn đã lưu trữ trong biến môi trường 7. Khi 6 định vị một phần tử trong iterable thỏa mãn vị ngữ, nó sẽ trả về phần tử. Về cơ bản, điều này tương đương với câu lệnh 9 trong ví dụ trước, nhưng rõ ràng hơn 8 thậm chí đã trừu tượng hóa khái niệm này thêm một bước với 2 1 lấy iterable và một số đối số từ khóa. Các đối số từ khóa đại diện cho các thuộc tính của các phần tử trong iterable mà tất cả phải được thỏa mãn để 1 trả về phần tửTrong ví dụ này, bạn đã xác định 4 là thuộc tính phải được đáp ứngChi tiết kỹ thuật. Về cơ bản, 1 thực sự sử dụng các đối số từ khóa 6 để xây dựng một vị ngữ, sau đó nó sử dụng để gọi 6Bây giờ bạn đã học được những kiến thức cơ bản về tương tác với API, bạn sẽ tìm hiểu sâu hơn một chút về chức năng mà bạn đang sử dụng để truy cập chúng. 8Phản hồi sự kiệnBạn đã biết rằng 8 là một sự kiện. Trên thực tế, bạn có thể nhận thấy rằng nó được xác định như vậy trong mã bởi trình trang trí 00Nhưng một sự kiện là gì? Sự kiện là điều gì đó xảy ra trên Discord mà bạn có thể sử dụng để kích hoạt phản ứng trong mã của mình. Mã của bạn sẽ lắng nghe và sau đó phản hồi các sự kiện Sử dụng ví dụ bạn đã thấy, trình xử lý sự kiện 8 xử lý sự kiện mà 4 đã tạo kết nối với Discord và chuẩn bị dữ liệu phản hồi của nóVì vậy, khi Discord kích hoạt một sự kiện, 8 sẽ định tuyến dữ liệu sự kiện tới trình xử lý sự kiện tương ứng trên 4 được kết nối của bạnCó hai cách trong 8 để triển khai trình xử lý sự kiện
Bạn đã thấy việc triển khai bằng cách sử dụng trình trang trí. Tiếp theo, hãy xem cách phân lớp 4 3Ở đây, giống như trước đây, bạn đã tạo một biến 1 và được gọi là 10 bằng mã thông báo Discord của bạn. Tuy nhiên, 4 thực tế lại khác. Thay vì sử dụng lớp cơ sở thông thường, 1 là một thể hiện của 13, có hàm 8 bị ghi đèKhông có sự khác biệt giữa hai phong cách triển khai sự kiện, nhưng hướng dẫn này sẽ chủ yếu sử dụng phiên bản trang trí vì nó trông tương tự như cách bạn triển khai các lệnh 15, đây là chủ đề bạn sẽ đề cập một chútChi tiết kỹ thuật. Bất kể bạn triển khai trình xử lý sự kiện của mình như thế nào, có một điều phải nhất quán. tất cả các trình xử lý sự kiện trong 8 phải làBây giờ bạn đã học cách tạo trình xử lý sự kiện, hãy xem qua một số ví dụ khác nhau về trình xử lý mà bạn có thể tạo Loại bỏ các quảng cáoChào mừng thành viên mớiTrước đây, bạn đã xem ví dụ về phản hồi sự kiện thành viên gia nhập bang hội. Trong ví dụ đó, người dùng bot của bạn có thể gửi cho họ một tin nhắn, chào mừng họ đến với cộng đồng Discord của bạn Bây giờ, bạn sẽ triển khai hành vi đó trong 4 của mình, sử dụng trình xử lý sự kiện và xác minh hành vi đó trong Discord 4Giống như trước đây, bạn đã xử lý sự kiện 8 bằng cách in tên người dùng bot trong một chuỗi được định dạng. Tuy nhiên, điểm mới là việc triển khai trình xử lý sự kiện 19 19, như tên gọi của nó, xử lý sự kiện thành viên mới gia nhập bang hộiTrong ví dụ này, bạn đã sử dụng 21 để tạo kênh tin nhắn trực tiếp. Sau đó, bạn đã sử dụng kênh đó để gửi tin nhắn trực tiếp tới thành viên mới đóChi tiết kỹ thuật. Lưu ý từ khóa 23 trước 21 và 25 23 tạm dừng việc thực hiện quy trình đăng ký xung quanh cho đến khi việc thực hiện từng quy trình đăng ký kết thúcBây giờ, hãy kiểm tra hành vi mới của bot của bạn Trước tiên, hãy chạy phiên bản mới của 6 và đợi sự kiện 8 kích hoạt, ghi thông báo của bạn tới 9 5Bây giờ, hãy truy cập Discord, đăng nhập và điều hướng đến bang hội của bạn bằng cách chọn nó từ phía bên trái màn hình Chọn Mời mọi người ngay bên cạnh danh sách bang hội nơi bạn đã chọn bang hội của mình. Chọn hộp có nội dung Đặt liên kết này thành không bao giờ hết hạn và sao chép liên kết Bây giờ, với liên kết mời được sao chép, hãy tạo một tài khoản mới và tham gia bang hội bằng liên kết mời của bạn Đầu tiên, bạn sẽ thấy rằng Discord đã mặc định giới thiệu bạn với bang hội bằng một tin nhắn tự động. Tuy nhiên, quan trọng hơn, hãy chú ý huy hiệu ở phía bên trái màn hình thông báo cho bạn về một tin nhắn mới Khi bạn chọn nó, bạn sẽ thấy một tin nhắn riêng tư từ người dùng bot của mình Hoàn hảo. Người dùng bot của bạn hiện đang tương tác với những người dùng khác bằng mã tối thiểu Tiếp theo, bạn sẽ tìm hiểu cách trả lời các tin nhắn cụ thể của người dùng trong cuộc trò chuyện Trả lời tin nhắnHãy thêm vào chức năng trước đó của bot bằng cách xử lý sự kiện 30 30 xảy ra khi một tin nhắn được đăng trong một kênh mà bot của bạn có quyền truy cập. Trong ví dụ này, bạn sẽ trả lời tin nhắn 32 bằng một câu nói ngắn gọn từ chương trình truyền hình Brooklyn Nine-Nine 6Phần lớn trình xử lý sự kiện này xem xét 33, kiểm tra xem nó có bằng với 32 hay không và phản hồi bằng cách gửi một trích dẫn ngẫu nhiên đến kênh của thư nếu nó bằngPhần còn lại là một phần quan trọng 7Bởi vì một 4 không thể phân biệt được sự khác biệt giữa người dùng bot và tài khoản người dùng bình thường, nên trình xử lý 30 của bạn sẽ bảo vệ khỏi trường hợp có khả năng lặp lại trong đó bot gửi một thông báo mà chính nó có thể xử lýĐể minh họa, giả sử bạn muốn bot của mình lắng nghe người dùng nói với nhau 37. Bạn có thể triển khai trình xử lý 30 của mình như thế này 8Ngoài bản chất có khả năng spam của trình xử lý sự kiện này, nó còn có tác dụng phụ tàn khốc. Tin nhắn mà bot phản hồi chứa cùng một tin nhắn mà bot sẽ xử lý Vì vậy, nếu một người trong kênh nói “Chúc mừng sinh nhật” một người khác, thì bot cũng sẽ kêu… lần nữa… và lần nữa… và lần nữa Đó là lý do tại sao điều quan trọng là phải so sánh 39 với 40 (người dùng bot của bạn) và bỏ qua bất kỳ thông báo nào của chính nóVì vậy, hãy sửa chữa 6 9Đừng quên 42 ở đầu mô-đun, vì trình xử lý 30 sử dụng 44Chạy chương trình 5Cuối cùng, hãy đến Discord để kiểm tra nó Tuyệt vời. Bây giờ bạn đã thấy một số cách khác nhau để xử lý một số sự kiện Discord phổ biến, bạn sẽ tìm hiểu cách xử lý các lỗi mà trình xử lý sự kiện có thể gây ra Loại bỏ các quảng cáoXử lý ngoại lệNhư bạn đã thấy, 8 là một hệ thống hướng sự kiện. Sự tập trung vào các sự kiện này kéo dài đến cả các trường hợp ngoại lệ. Khi một trình xử lý sự kiện tăng một 46, Discord sẽ gọi 47Hành vi mặc định của 47 là viết thông báo lỗi và theo dõi ngăn xếp cho 49. Để kiểm tra điều này, hãy thêm một trình xử lý tin nhắn đặc biệt vào 30 1Trình xử lý tin nhắn 51 mới cho phép bạn gửi một 52 theo lệnhChạy chương trình và gõ 51 vào kênh DiscordBây giờ bạn sẽ thấy 46 đã được đưa ra bởi trình xử lý 30 của bạn trong bảng điều khiển 2Ngoại lệ đã bị bắt bởi trình xử lý lỗi mặc định, vì vậy đầu ra chứa thông báo 56. Hãy khắc phục điều đó bằng cách xử lý lỗi cụ thể đó. Để làm như vậy, bạn sẽ bắt 52 và ghi nó vào một tệp thay thếTrình xử lý sự kiện 47 lấy 59 làm đối số đầu tiên. Trong trường hợp này, chúng tôi mong đợi 59 là 61. Nó cũng chấp nhận 62 và 63 dưới dạng các đối số từ khóa, vị trí và linh hoạt được chuyển đến trình xử lý sự kiện ban đầuVì vậy, vì 30 nhận một đối số duy nhất, 65, nên chúng tôi mong đợi 66 là 65 mà người dùng đã gửi trong kênh Discord 3Nếu 46 bắt nguồn từ trình xử lý sự kiện 30, bạn _____9_______70 một chuỗi được định dạng vào tệp 71. Nếu một sự kiện khác gây ra một 46, thì chúng tôi chỉ muốn trình xử lý của chúng tôi đưa ra lại ngoại lệ để gọi hành vi mặc địnhChạy 6 và gửi lại thông báo 51 để xem đầu ra trong 71 4Thay vì chỉ có dấu vết ngăn xếp, bạn có một lỗi nhiều thông tin hơn, hiển thị 65 đã khiến 30 tăng 52, được lưu vào một tệp để tồn tại lâu hơnChi tiết kỹ thuật. Nếu bạn muốn tính đến 46 thực tế khi bạn viết thông báo lỗi của mình cho 71, thì bạn có thể sử dụng các hàm từ 81, chẳng hạn nhưBây giờ bạn đã có một số kinh nghiệm xử lý các sự kiện khác nhau và tương tác với API Discord, bạn sẽ tìm hiểu về một lớp con của 4 có tên là 15, lớp này triển khai một số chức năng tiện dụng, dành riêng cho botKết nối Bot 15 là một lớp con của 4 có thêm một chút chức năng bổ sung hữu ích khi bạn tạo người dùng bot. Ví dụ: một 15 có thể xử lý các sự kiện và lệnh, gọi kiểm tra xác thực, v.v.Trước khi bạn tìm hiểu các tính năng dành riêng cho 15, hãy chuyển đổi 6 để sử dụng 15 thay vì 4 5Như bạn có thể thấy, 15 có thể xử lý các sự kiện giống như cách mà 4 thực hiện. Tuy nhiên, hãy lưu ý sự khác biệt giữa 4 và 15
Thư viện tiện ích mở rộng, 00, cung cấp một số thành phần thú vị để giúp bạn tạo Discord 15. Một thành phần như vậy là 02Loại bỏ các quảng cáoSử dụng các lệnh # bot.py import os import discord from dotenv import load_dotenv load_dotenv() TOKEN = os.getenv('DISCORD_TOKEN') client = discord.Client() @client.event async def on_ready(): print(f'{client.user} has connected to Discord!') client.run(TOKEN) 15Nói chung, lệnh là mệnh lệnh mà người dùng đưa ra cho bot để nó thực hiện điều gì đó. Các lệnh khác với các sự kiện bởi vì chúng
Về mặt kỹ thuật, 02 là một đối tượng bao bọc một chức năng được gọi bằng lệnh văn bản trong Discord. Lệnh văn bản phải bắt đầu bằng 99, được xác định bởi đối tượng 15Chúng ta hãy xem một sự kiện cũ để hiểu rõ hơn điều này trông như thế nào 6Tại đây, bạn đã tạo một trình xử lý sự kiện 30, nhận chuỗi 65 và so sánh nó với một tùy chọn được xác định trước. 32Sử dụng 02, bạn có thể chuyển đổi ví dụ này thành cụ thể hơn 7Có một số đặc điểm quan trọng cần hiểu về việc sử dụng 02
Một 23 chứa dữ liệu như kênh và bang hội mà người dùng gọi là 02 từChạy chương trình 8Khi bot của bạn đang chạy, giờ đây bạn có thể truy cập Discord để thử lệnh mới của mình Theo quan điểm của người dùng, sự khác biệt thực tế là tiền tố giúp chính thức hóa lệnh, thay vì chỉ đơn giản là phản ứng với một sự kiện 30 cụ thểĐiều này cũng đi kèm với những lợi ích tuyệt vời khác. Ví dụ: bạn có thể gọi lệnh 28 để xem tất cả các lệnh mà 15 của bạn xử lýNếu bạn muốn thêm mô tả vào lệnh của mình để thông báo 30 có nhiều thông tin hơn, chỉ cần chuyển mô tả 30 cho trình trang trí 32 9Bây giờ, khi người dùng gọi lệnh 28, bot của bạn sẽ hiển thị mô tả về lệnh của bạnHãy nhớ rằng tất cả các chức năng này chỉ tồn tại cho lớp con 15, không phải lớp cha 4 02 có một chức năng hữu ích khác. khả năng sử dụng một 37 để thay đổi các loại đối số của nóTự động chuyển đổi tham sốMột lợi ích khác của việc sử dụng các lệnh là khả năng chuyển đổi các tham số Đôi khi, bạn yêu cầu một tham số phải là một loại nhất định, nhưng các đối số của hàm 02 theo mặc định là các chuỗi. A cho phép bạn chuyển đổi các tham số đó thành loại mà bạn mong muốnVí dụ: nếu bạn muốn tạo một 02 để người dùng bot của mình mô phỏng việc tung một số viên xúc xắc (biết những gì bạn đã học cho đến nay), bạn có thể định nghĩa nó như sau 0Bạn đã xác định 41 để lấy hai tham số
Sau đó, bạn trang trí nó bằng 32 để bạn có thể gọi nó bằng lệnh 43. Cuối cùng, bạn 22 nhận được kết quả trong một tin nhắn gửi lại cho 45Trong khi điều này có vẻ đúng, nó không phải là. Thật không may, nếu bạn chạy 6 và gọi lệnh 43 trong kênh Discord của mình, bạn sẽ thấy lỗi sau 1Nói cách khác, 48 không thể chấp nhận 49 làm đối số. Thay vào đó, nó phải là một 50. Mặc dù bạn có thể chuyển từng giá trị thành một 50, nhưng có một cách tốt hơn. bạn có thể sử dụng một 37Trong 8, một 37 được xác định bằng cách sử dụng Python 3 2Bạn đã thêm chú thích 55 vào hai tham số mà bạn muốn thuộc loại 50. Thử lại lệnhVới sự thay đổi nhỏ đó, lệnh của bạn hoạt động. Sự khác biệt là bạn hiện đang chuyển đổi các đối số lệnh thành 50, điều này làm cho chúng tương thích với logic của hàm của bạnGhi chú. Một 37 có thể là bất kỳ kiểu dữ liệu nào có thể gọi được, không chỉ đơn thuần. Đối số sẽ được chuyển đến phần có thể gọi được và giá trị trả về sẽ được chuyển vào ____22_______02Tiếp theo, bạn sẽ tìm hiểu về đối tượng 60 và cách đối tượng này có thể cải thiện các lệnh của bạnKiểm tra vị từ lệnhMột 60 là một biến vị ngữ được đánh giá trước khi một 02 được thực thi để đảm bảo rằng ____22_______23 xung quanh lệnh gọi 02 là hợp lệTrong một ví dụ trước đó, bạn đã làm điều gì đó tương tự để xác minh rằng người dùng đã gửi tin nhắn mà bot xử lý không phải là người dùng bot. 7Tiện ích mở rộng 65 cung cấp một cơ chế sạch hơn và dễ sử dụng hơn để thực hiện loại kiểm tra này, cụ thể là sử dụng các đối tượng 60Để chứng minh điều này hoạt động như thế nào, giả sử bạn muốn hỗ trợ một lệnh 67 để tạo một kênh mới. Tuy nhiên, bạn chỉ muốn cho phép quản trị viên khả năng tạo kênh mới bằng lệnh nàyTrước tiên, bạn sẽ cần tạo vai trò thành viên mới trong quản trị viên. Đi vào bang hội Discord và chọn menu {Tên máy chủ} → Cài đặt máy chủ Sau đó, chọn Vai trò từ danh sách điều hướng bên trái Cuối cùng chọn dấu + bên cạnh ROLES và nhập tên 68 và chọn Save ChangesBây giờ, bạn đã tạo một vai trò 68 mà bạn có thể chỉ định cho những người dùng cụ thể. Tiếp theo, bạn sẽ cập nhật 6 thành 60 vai trò của người dùng trước khi cho phép họ bắt đầu lệnh 4Trong 6, bạn có một hàm 02 mới, được gọi là 74, hàm này nhận một tùy chọn 75 và tạo kênh đó. 74 cũng được trang trí bằng một 60 được gọi là 78Bạn cũng sử dụng 79 để đảm bảo rằng bạn không tạo kênh trùng tên với kênh hiện cóNếu bạn chạy chương trình này như hiện tại và nhập 80 vào kênh Discord của mình, thì bạn sẽ thấy thông báo lỗi sau 5 81 này nói rằng 82 đã thất bại. Thật không may, lỗi này chỉ in tới 9. Sẽ tốt hơn nếu báo cáo điều này cho người dùng trong kênh. Để làm như vậy, hãy thêm sự kiện sau 6Sự kiện này xử lý một sự kiện lỗi từ lệnh và gửi một thông báo lỗi đầy đủ thông tin trở lại 23 ban đầu của 02 được gọiHãy thử lại tất cả và bạn sẽ thấy lỗi trong kênh Discord Tuyệt vời. Bây giờ, để giải quyết vấn đề, bạn cần tự cấp cho mình vai trò quản trị viên Với vai trò quản trị viên, người dùng của bạn sẽ vượt qua 60 và có thể tạo kênh bằng lệnhGhi chú. Hãy nhớ rằng để gán vai trò, người dùng của bạn sẽ phải có quyền chính xác. Cách dễ nhất để đảm bảo điều này là đăng nhập bằng người dùng mà bạn đã tạo bang hội. Khi bạn gõ lại 80, bạn sẽ tạo thành công kênh real-pythonNgoài ra, lưu ý rằng bạn có thể chuyển đối số 75 tùy chọn để đặt tên cho kênh theo bất cứ điều gì bạn muốnVới ví dụ cuối cùng này, bạn đã kết hợp một 02, một sự kiện, một 60 và thậm chí cả tiện ích 1 để tạo một bot Discord hữu íchPhần kết luậnXin chúc mừng. Bây giờ, bạn đã học cách tạo bot Discord bằng Python. Bạn có thể tạo bot để tương tác với người dùng trong bang hội do bạn tạo hoặc thậm chí là bot mà người dùng khác có thể mời để tương tác với cộng đồng của họ. Các bot của bạn sẽ có thể phản hồi các tin nhắn và lệnh cũng như nhiều sự kiện khác Trong hướng dẫn này, bạn đã học những kiến thức cơ bản về cách tạo bot Discord của riêng mình. Bây giờ bạn biết
Để đọc thêm về thư viện 8 mạnh mẽ và đưa bot của bạn lên cấp độ tiếp theo, hãy đọc qua tài liệu phong phú của họ. Ngoài ra, giờ đây bạn đã quen thuộc với API Discord nói chung, bạn có nền tảng tốt hơn để xây dựng các loại ứng dụng Discord khácBạn cũng có thể khám phá các khả năng của ChatterBot, Tweepy, InstaPy và Alexa Skills để tìm hiểu thêm về cách bạn có thể tạo bot cho các nền tảng khác nhau bằng Python Đánh dấu là đã hoàn thành Xem ngay Hướng dẫn này có một khóa học video liên quan do nhóm Real Python tạo. Xem nó cùng với hướng dẫn bằng văn bản để hiểu sâu hơn. Tạo Bot Discord bằng Python 🐍 Thủ thuật Python 💌 Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python Gửi cho tôi thủ thuật Python » Giới thiệu về Alex Ronquillo Alex Ronquillo là Kỹ sư phần mềm tại thelab. Anh ấy là một Pythonista cuồng nhiệt, cũng đam mê viết lách và phát triển trò chơi » Thông tin thêm về AlexMỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là Aldren Jon Joanna Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia Nâng cao kỹ năng Python của bạn » Chuyên gia Kỹ năng Python trong thế giới thực Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng các chuyên gia Pythonistas Nâng cao kỹ năng Python của bạn » Bạn nghĩ sao? Đánh giá bài viết này Tweet Chia sẻ Chia sẻ EmailBài học số 1 hoặc điều yêu thích mà bạn đã học được là gì? Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi |