Я сейчас работаю над ботом Discord с discord.py.
У меня есть основной скрипт, где все командные события запускают функции из других скриптов. Все работало нормально, но затем я решил реализовать базы данных и скачал PostgreSQL и asyncpg. С тех пор я получаю эту ошибку: AttributeError: module 'mod_commands' has no Attribute 'ban'
при попытке вызвать функции из моего скрипта с именем mod_commands.py
.
Вызов функций из других скриптов работает нормально. Я ничего не менял, поэтому уверен, что эта ошибка связана с PostgreSQL или asyncpg. Дело в том, что у меня нет понятия , почему это происходит, и как Я мог бы попытаться это исправить.
Я делаю это на Raspberry Pi 4 Модель B с Linux 10 (Buster). Моя Python версия 3.7.3.
Вот сценарии, о которых я говорю:
programm.py:
import mod_commands
from discord.ext import commands
import discord
bot = commands.Bot(command_prefix='~',description=description)
@bot.command(name='ban')
@commands.has_permissions(ban_members=True)
@commands.bot_has_permissions(ban_members=True)
async def ban(ctx, members : commands.Greedy[discord.Member], *, reason = 'Idiotisches Verhalten'):
await mod_commands.ban(ctx, members, reason)
def getLatency():
return bot.latency
bot.run(TOKEN)
mod_commands.py:
import bot_utility
from discord.ext import commands
async def ban(ctx, members, reason):
print('command => mod_commands.ban')
bannableMembers = []
for member in members:
if(member.guild_permissions.administrator):
await ctx.send('{} kann nicht gebannt werden.'.format(member.display_name))
else:
bannableMembers.append(member)
embed = bot_utility.createEmbed(ctx.guild, 'Du wurdest gebannt', 'Grund: ' + reason, 0xFF0000)
await member.send(embed=embed)
await ctx.guild.ban(member, reason=reason)
if(bannableMembers != None):
embed = bot_utility.createEmbed(ctx.guild, 'Banns: (' + str(len(bannableMembers)) + ')', 'Grund: ' + reason, 0xff0000)
for member in bannableMembers:
embed.add_field(name=member.display_name, value=member.id)
await ctx.send(embed=embed)
и последнее по порядку, но не по значению: bot_utility.py:
import discord
import programm
def createEmbed(guild, title, description, colour : discord.colour):
embed = discord.Embed(title = title, description=description, colour=colour)
embed.set_footer(text=guild.name + '||%.2fs' % programm.getLatency(), icon_url=guild.icon_url)
embed.type = 'rich'
return embed
Я пытался найти ответы самостоятельно, но похожие вопросы были либо связаны с особым случаем, для которого я не Я не верю, что решения могут работать на меня или остались без ответа. Вот ссылки, на случай, если они понадобятся вам по какой-либо причине:
Ошибка атрибута У объекта 'module' нет атрибута 'DateField'
Ошибка получения атрибута : модуль 'matplotlib.pyplot' не имеет атрибута 'canvas'
AttributeError: объект 'module' не имеет атрибута 'tests'
Если вам нужно больше информации, пожалуйста, скажите мне. Спасибо, что нашли время подумать об этом.