2017-10-10 67 views
0

我当前的代码内Discord.py无效参数是member.server_default_channel

@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) 

除了其他必要的线(如import discord等)和其它命令。

当有成员加入或离开,我得到这个错误:

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 

我不明白为什么,我错过什么?

回答

1

Default channels no longer exist。这意味着2件事:

  1. server.default_channel可能会返回一个NoneType。
  2. 试图发送消息到server可能会引起discord.NotFound

这些情况将发生在8月3日之后创建的任何服务器或任何已删除其“默认”通道的服务器上。

您需要自己选择一个频道,或要求服务器设置欢迎信息的频道。您仍然可以尝试发送到服务器,但如果失败,请确保您有回退选项。

0

默认通道不再是一件事了。