Discord Bot Python 3.6 Ошибка импорта команд - PullRequest
0 голосов
/ 10 октября 2018
import discord
from discord.ext.commands import commands,has_permissions, MissingPermissions
import json

with open('reports.json', encoding='utf-8') as f:
  try:
    report = json.load(f)
  except ValueError:
    report = {}
    report['users'] = []

client = discord.ext.commands.Bot(command_prefix = '?')

Когда я запускаю это, это приходит.если я дам от discord.ext import commands,has_permissions, MissingPermissions Тогда это придет ImportError: cannot import name 'has_permissions'

Traceback (most recent call last):
  File "F:\Rubayet\Discord Bots\Discord.py\Test.Bot\Test.Bot.py", line 2, in <module>
    from discord.ext.commands import commands,has_permissions, MissingPermissions
ImportError: cannot import name 'commands'

Я не знаю, почему.Пожалуйста, помогите мне с этим.

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

MissingPermissions доступно только в ветви перезаписи.Если у вас его нет, вам нужно удалить discord.py, затем запустить

pip install -U git+https://github.com/Rapptz/discord.py@rewrite#egg=discord.py[voice]

Затем вы можете реорганизовать импорт.Либо импортируйте commands и ссылайтесь на все через этот импорт, либо импортируйте все, что используете по отдельности.Не делайте и то, и другое.

from discord.ext import commands

bot = commands.Bot(command_prefix='!')

@bot.command()
@commands.has_permissions(...)
...

или

from discord.ext.commands import Bot, has_permissions

bot = Bot(command_prefix='!')

@bot.command()
@has_permissions()
...
0 голосов
/ 10 октября 2018

Я предполагаю, что вы используете Rapptz / Discord.py Вы не можете импортировать команды из папки команд.Нет такой вещи.

Я полагаю, вы ищете метод core класса has_permissions:

from discord.ext import commands
from discord.ext.commands import has_permissions

Вам нужно будет определить свою собственную ошибку дляMissingPermissions

class MissingPermissions(Exception):

#and here's a "custom" check example
def has_perms(**perms):
    if has_permissions(perms):
        return True
    else:
        raise MissingPermissions
...