Discord.py Invalid arguments inside member.server_

2019-03-03 17:11发布

My current code is

@client.event
async def on_member_join(member):
    serverchannel = member.server.default_channel
    msg = "Wuss poppin', {0}. Welcome to {1}".format(member.mention, member.server.name)
    await client.send_message(member.server.default_channel, msg)`

@client.event
async def on_member_remove(member):
    serverchannel = member.server.default_channel
    msg = "Well. Cya, {0}!".format(member.mention)
    await client.send_message(serverchannel, msg)

As well as the other necessary lines (like import discord etc.) and other commands.

When a member joins or leaves, I get this error:

Ignoring exception in on_member_join
Traceback (most recent call last):
  File "C:\Users\WillL\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\client.py", line 307, in _run_event
    yield from getattr(self, event)(*args, **kwargs)
  File "C:/Users/WillL/Desktop/MemzBot-master/index.py", line 102, in on_member_join
    await client.send_message(member.server.default_channel, msg)
  File "C:\Users\WillL\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\client.py", line 1145, in send_message
    channel_id, guild_id = yield from self._resolve_destination(destination)
  File "C:\Users\WillL\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\client.py", line 289, in _resolve_destination
    raise InvalidArgument(fmt.format(destination))
discord.errors.InvalidArgument: Destination must be Channel, PrivateChannel, User, or Object. Received NoneType

I don't understand why, what am I missing?

2条回答
Deceive 欺骗
2楼-- · 2019-03-03 17:22

Default channels no longer exist. This means 2 things:

  1. server.default_channel may return a NoneType.
  2. Trying to send a message to server may raise discord.NotFound.

These cases will happen on any servers created after August 3rd, or any servers who have deleted their "default" channel.

You need to either choose a channel yourself, or ask the server to set a channel for the welcome message. You can still attempt to send to the server, but make sure you have a fall back option if it fails.

查看更多
贪生不怕死
3楼-- · 2019-03-03 17:34

Default channels are not a thing anymore.

查看更多
登录 后发表回答