#python #python-3.x #discord #discord.py #discord.py-rewrite
#python #python-3.x #Discord #discord.py
Вопрос:
пытаюсь заставить моего бота отвечать на DMS «это dm», но безуспешно, вот мой код:
@client.event
async def on_message(message):
if message.guild == null:
await message.channel.send('this is a dm')
else:
pass
Я также пытался использовать это:
@client.event
async def on_message(message):
if isinstance(message.channel, discord.channel.DMChannel):
await ctx.send('This is a DM')
В этом последнем я получаю ошибку из-за контекста (ctx)
Ответ №1:
Первый отправленный вами код использует null
, чего даже нет в python. Второе немного ненужно, используйте это вместо:
@client.event
async def on_message(message):
if not message.guild:
await message.channel.send('this is a dm')
Ответ №2:
Я знаю, что это довольно поздний ответ, но мне действительно нужно указать на это.
Я бы рекомендовал использовать этот код, поскольку в противном случае он мог бы продолжать отвечать на свои собственные сообщения, и вы получили бы цикл ответов. Этот код также выдает ошибку, если у пользователя отключены личные DM.
@client.event()
async def on_message(message):
if message.author == client.user:
return
if not message.guild:
try:
await message.channel.send("This is a DM.")
except discord.errors.Forbidden:
pass
else:
pass
Ответ №3:
Попробуйте это:
import discord
client = discord.Client()
@client.event
async def on_message(message):
if isinstance(message.channel, discord.channel.DMChannel) and message.author != client.user:
await message.channel.send('This is a DM')
client.run("KEY")