LoginSignup
0
1

More than 3 years have passed since last update.

【Discord.py】dispanderが上手く導入できない方への一解決案

Last updated at Posted at 2020-10-03

はじめに

私はpython初心者です。discord.pyから学び始めました。
タイトルにありますように、discord.pyのdispanderがうまくいかない人のために
私の環境でうまく作動した修正案に関して共有した次第です。間違っていることもあるかもしれませんので、
コメントにてご報告いただければと思います。

追記: 2020/10/04 14:30
このコードは私の環境でのミスの可能性が十分あります。
動かなかった場合、1つの解決策と思っていただければと思います。
この方法が正しいものであるかの判断は私には出来かねます。
コメントでおっしゃられている通り、通常動くコードであると思います。
ただし、最後に示すGithubのコード comitt 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():内で呼び出しています。

dispander

最後に

Dispanserの招待リンクです。githubにてコードは公開してあります。
最後まで読んでいただきありがとうございました!
間違いなどございましたら冒頭にもありましたが、コメント等でお書きいただければと思います…。

0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1