Python Discord 봇 사용자 지정
12169 단어 discordbotpythonextensions
Loading Cogs
일부 이벤트 리스너
이벤트 리스너는 봇이 추가되는 서버를 추적하는 것과 같은 다양한 방법으로 사용할 수 있습니다.
봇이 참가한 서버를 추적하려면
on_guild_join()
데코레이터를 통해 @client.event
메서드를 호출할 수 있습니다.mkdir guilds.json
import json
Python 모듈import json
...
@client.event
async def on_guild_join(guild):
with open('guilds.json', 'r') as f:
guilds = json.load(f)
# Set default prefix variable and name of server
guilds[str(guild.id)] = {
"guild Name": guild.name,
"Prefix": "$"
}
# Push dictionary to JSON file
with open('guilds.json', 'w') as f:
json.dump(guilds, f, indent=4)
...
on_guild_remove()
로 JSON 파일을 정리하기 위해 봇이 서버에서 제거되는 경우에도 마찬가지입니다....
@client.event
async def on_guild_remove(guild):
with open('guilds.json', 'r') as f:
guilds = json.load(f)
# Remove guild dictionary from JSON file
guilds.pop(str(guild.id))
# Apply changes to file
with open('guilds.json', 'w') as f:
json.dump(guilds, f, indent=4)
...
봇과의 상호 작용을 만들고 "대화"를 하고 싶다면
on_message()
메서드가 할 수 있는 몇 가지 작업이 있습니다.필요에 맞게 사용자 정의할 수 있지만 기본 예는 다음과 같습니다.
...
@client.event
async def on_message(message):
# Stop the bot from replying to itself or any other bot
if message.author.bot: return
# Send a reply to a human
if message.content == "ping":
await message.channel.send("pong")
...
톱니
기본 파일에 명령 및 이벤트 리스너를 추가하면 불필요한 혼란이 발생합니다. 확장 기능을 사용하면 더 간결하게 사용할 수 있는 더 많은 메서드를 채울 수 있는 공간이 생깁니다. 이를 위해서는
Cog
클래스가 필요합니다.톱니 장식자
cog 파일을 만들려면 각각 새 클래스의 인스턴스가 필요합니다.
장부 템플릿
from nextcord.ext import commands
class <ClassName>(commands.Cog):
# Initialize with `self` and `bot: commands.Bot`
def __init__(self, bot: commands.Bot):
self.bot = bot
# All commands/listeners always take a parameter of "self"
@commands.Cog.listener()
async def <commandName>(self):
# Do some stuff
def setup(bot: commands.Bot):
bot.add_cog(<ClassName>(bot))
오류 처리기
사용자 정의 오류 핸들러가 있으면 발행된 명령에 대한 클라이언트 피드백을 제공하는 데 유용합니다.
...
async def on_command_error(self, ctx: commands.Content, error: commands.CommandError):
if isinstance(error, commands.CommandNotFound):
message = f'{error}'
elif isinstance(error, commands.UserInputError):
message = 'Your input was incorrect'
else:
message = 'Something went wrong while running a command'
await ctx.send(message, delete_after=5)
await ctx.message.delete(delay=5)
...
isinstance()
메서드는 두 개의 매개 변수를 사용하고 부울을 반환합니다.object
class or tuple
bool
로딩 코그
일부 톱니바퀴를 생성한 후 기본
bot.py
파일로 돌아가서 봇 시작 시 톱니바퀴를 로드하려면 for loop
가 필요합니다.이와 함께 아직 완료되지 않은 경우 파일 맨 위에 있는
os
모듈을 가져와야 합니다.import os
...
# Load extensions on bot start
for filename in os.listdir('./cogs'):
if filename.endswith('.py'):
client.load_extension(f'cogs.{filename[:-3]}')
...
이제 확장 내에서 오류가 발견되면 봇이 시작되고 이제 톱니바퀴를 사용할 수 있습니다.
Reference
이 문제에 관하여(Python Discord 봇 사용자 지정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/swislokdev/customize-python-discord-bot-i9f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)