#events #discord #discord.py-rewrite #mute #discogs-api
#Мероприятия #Discord #discord.py #отключение звука #discogs-api
Вопрос:
import discord
import re
from itertools import cycle
class Status(commands.Cog):
def __init__(self, client):
self.client = client
@commands.Cog.listener()
async def on_message(self, ctx):
if ctx.author.id == self.client.user.id:
return
if re.search("...", ctx.content):
await ctx.send("you're... gonna get... muted... if you.. talk... like.. this...")
user = ctx.message.author
# print(str(user))
# print(str(message.content))
muted_role = discord.utils.get(ctx.author.guild.roles, name="Muted")
await self.client.add_roles(ctx.author, muted_role)
Я хочу временно отключить пользователя, если он использует многоточия в отправляемом сообщении. ctx.send
не работает, бот не отправляет сообщение на канал. Он говорит, что self.client.add_roles
этого не существует.
Muted
это созданная мной роль, у которой нет прав на отправку сообщений.
Есть идеи, почему? Некоторая помощь была бы чрезвычайно признательна. Я использую
AttributeError: 'Message' object has no attribute 'send'
это ошибка, которую я получаю
[ПРАВИТЬ]
@commands.Cog.listener()
# @commands.command()
async def on_message(self, message):
if message.author.id == self.client.user.id:
return
if re.search("...", message.content):
await message.channel.send("you're... gonna get... muted... if you.. talk... like.. this...")
user = message.author
muted_role = discord.utils.get(message.guild.roles, name="Muted")
await user.add_roles(muted_role, reason="you know what you did", atomic=True)
Я просмотрел документацию и сделал это, это работает, спасибо за поддержку 🙂
Комментарии:
1. измените последнюю строку на
await self.user.add_roles(muted_role)
2. сейчас все работает нормально?
3. да, это работает, спасибо
Ответ №1:
Было много ошибок, пожалуйста, взгляните на документацию.
Я исправил их для вас —
@commands.Cog.listener()
async def on_message(self, message):
if message.author.id == self.client.user.id:
return
else:
await message.channel.send("you're... gonna get... muted... if you.. talk... like.. this...")
user = message.author
print(str(user))
print(str(message.content))
muted_role = discord.utils.get(message.guild.roles, name="Muted")
await self.user.add_roles(muted_role)
Дайте мне знать, если вы все еще получаете какие-либо ошибки.
Последнее редактирование-
Я попробовал эту команду для себя вне cog, и она отлично работает 🙂
@client.event
async def on_message(message):
if message.author.id == client.user.id:
return
elif "test" in message.content:
await message.channel.send("you're... gonna get... muted... if you.. talk... like.. this...")
user = message.author
print(str(user))
print(str(message.content))
muted_role = discord.utils.get(message.guild.roles, name="Muted")
await user.add_roles(muted_role)
else:
return
await client.process_commands(message)
Комментарии:
1. попробуйте использовать
await self.user.add_roles(muted_role)
2.
AttributeError: 'Status' object has no attribute 'user'
это происходит3. возможно, попробуйте удалить
self
?