【Discord.py】dispander를 잘 도입할 수 없는 분에게 한 해결안

소개



나는 파이썬 초보자입니다. discord.py에서 배우기 시작했습니다.
제목에서 볼 수 있듯이 discord.py의 dispander가 작동하지 않는 사람들을 위해
제 환경에서 잘 작동한 수정안에 대해 공유한 대로입니다. 잘못되었을 수도 있으므로,
코멘트에서 보고 주시면 좋겠습니다.

추가: 2020/10/04 14:30
이 코드는 내 환경에서 실수 가능성이 충분합니다.
움직이지 않았다면 한 가지 해결책이라고 생각해 주시면 좋겠습니다.
이 방법이 옳은지 판단하는 것은 나에게는 불가능합니다.
코멘트로 말씀하신대로, 통상 움직이는 코드라고 생각합니다.
다만, 마지막에 나타내는 Github의 코드 commit 789d88f 로 움직이지 않았던 것을 근거로 공개하고 있습니다.

추가: 2020/10/04/22:50
어떤 분으로부터 제시해 주신 코드로 동작하는 것을 확인했습니다. 마지막 부분에 실어 있기 때문에, 그쪽을 보실 수 있으면이라고 생각합니다.

개발 환경



discord.py: 1.5.0
Heroku
dispander: 0.4.0

코드



아래는 DiscordBotPortalJP의 dispander에서 소개된 함수로 사용하는 경우의 코드입니다.

root/
├ dispander/
 │ ├ __init__.py
 │ └ module.py
└ discordbot.py

samplebot.py
import discord
from dispander import dispand
client = discord.Client()

@client.event
async def on_message(message):
    if message.author.bot:
        return
    await dispand(message)

client.run(token)

그러나 내 환경에서는 어떻게 움직이지 않았다.
아마도 dispandercogのsetup関数 가 호출되지 않은 것 같습니다.

그러므로
아래 코드로 변경했습니다.

root/
├ dispander/
 │ └ module.py
└ discordbot.py

discord.py (변형 버전)
import discord
import dispander.module as dispand

bot = discord.Client()
@bot.event
async def on_ready():
    dispand.setup(bot)
    await dispand(message)

bot.run(token)

라고 쓴 것입니다만…



root/
├ dispander/
 │ └ module.py
└ discordbot.py

어떤 분으로부터 아래의 코드를 제시해 주셨습니다.
나의 환경에서 확인한 곳 통상대로 움직이는 것을 확인했으므로 올려 주셨습니다.

discord.py (업데이트 버전)
import os
import re
import discord
from dispander.module import dispand
from discord.ext import commands
client = discord.Client()

@client.event
async def on_message(message):
    if message.author.bot:
        return
    await dispand(message)

client.run(token)

해설



discord.py (Rewrite 버전)의 Cog를 사용해보십시오. 보다, cogのsetup関数dispand.setup(bot) 로 호출했습니다. 또, on_message(message): 그러면, 다른 함수가 동작하지 않는다고 하는 불편이 발생했기 때문에, on_ready(): 내에서 호출하고 있습니다.


마지막으로



Dispanser 초대 링크입니다. github에서 코드은 공개되었습니다.
끝까지 읽어 주셔서 감사합니다!
실수 등 있으시면 처음에도 있었습니다만, 코멘트등으로 써 주시면 좋겠습니다…

좋은 웹페이지 즐겨찾기