Дискорд бот и ООП
Уже какое-то время пишу ботов для дискорда, используя класс discord.ext.commands.Bot. Все боты написаны в процедурном стиле, но недавно на https://pypi.org/project/discord.py/ увидел, что, реализуя бота на discord.Client, можно свернуть его в отдельный дочерний класс.
Однако, попробовав свернуть своего бота на discord.ext.commands.Bot в класс, я столкнулся с некоторыми проблемами. Что здесь не так и как это исправить?
Рабочий бот, взятый с PyPI:
import discord
from discord.ext import commands
bot = commands.Bot(command_prefix='>')
@bot.command()
async def ping(ctx):
await ctx.send('pong')
bot.run('token')
Моя попытка свернуть его в класс:
import discord
from discord.ext import commands
class PingBot(commands.Bot):
def __init__(self, *args, **kwargs):
self.bot = super(*args, **kwargs)
@bot.command()
async def ping(ctx):
await ctx.send('pong')
bot = PingBot(command_prefix='>')
bot.run('token')
Получаемое исключение:
Traceback (most recent call last):
File "E:\Python\Example.py", line 4, in <module>
class PingBot(commands.Bot):
File "E:\Python\Example.py", line 8, in PingBot
@bot.command()
NameError: name 'bot' is not defined
[Finished in 1.2s]