Discord.py on_message (), но только для личных сообщений - PullRequest
1 голос
/ 29 мая 2020

Итак, я работаю над дискорд-ботом. И я использую событие on_message (), которое работает как с личными сообщениями, так и на серверах. Я хочу, чтобы это работало только в личных сообщениях, и не знаю, как go об этом. Если кто-нибудь может мне помочь, это будет раааад.

import os
import discord
from discord.ext import commands


TOKEN = 'NzE1MzQxNDY5MTMyNTIxNTA0.Xs7ztA.EczL36i0mcuXTTn_xD3oeln5aXU'
quotedUsers = []

client = commands.Bot(command_prefix = '/')

@client.event
async def on_ready():
    print('Logged in as')
    print(client.user.name)
    print(client.user.id)
    print('------')
    await client.change_presence(activity=discord.Game(name='with myself.'))

@client.event
async def on_message(message):
    await message.author.send("Recieved: " + message.content)

@client.command()
async def search(ctx, *, question):
    await ctx.author.send("Searching: " + question)


client.run(TOKEN)```

Ответы [ 2 ]

0 голосов
/ 29 мая 2020

Гильдия сообщений также не существует в групповом DM, поэтому вы должны проверить, является ли канал, в котором вы отправляете сообщения, DM. Вы можете использовать атрибут dm_channel пользователя:

@client.event
async def on_message(message):
    if message.channel.id == message.author.dm_channel.id: # dm only
        # do stuff here #
    elif not message.guild: # group dm only
        # do stuff here #
    else: # server text channel
        # do stuff here #
0 голосов
/ 29 мая 2020

Когда будет получен DM, у него не будет гильдии, поэтому вы сможете использовать этот лог c так:

@client.event
async def on_message(message):
    # you'll need this because you're also using cmd decorators
    await client.process_commands(message)
    if not message.guild:
        await message.author.send(f"Received: {message.content}")

Ссылки:

  • Bot.process_commands()
  • Message.guild - упоминается «если применимо», что означает, что он вернется None если он не в гильдии, а скорее DM
  • f-Strings - Python 3.6 +
...