使用discord.py

时间:2019-12-29 19:43:37

标签: python-3.x typeerror discord.py-rewrite

当有人加入我的不和谐状态时,尝试向指定的频道发送消息时遇到问题。 我收到此错误:

Ignoring exception in on_member_join
Traceback (most recent call last):
  File "C:\Users\Timo\Anaconda3\envs\Discord\lib\site-packages\discord\client.py", line 270, in _run_event
    await coro(*args, **kwargs)
  File "C:/Users/Timo/PycharmProjects/Discord/Bot 1/Main.py", line 30, in on_member_join
    channel = Bot.get_channel("649275309396590626")
TypeError: get_channel() missing 1 required positional argument: 'id'

我正在使用v1.2.5版本。 这是代码:

@client.event
async def on_member_join(member):
    channel = Bot.get_channel("649275309396590626")
    await channel.send(f"{member} ist dem Server beigetreten!")

这是Bot变量:

import discord
from discord.ext import commands
from discord.ext.commands import Bot

client = Bot(command_prefix=".")

我将其编辑为:

@client.event async def on_member_join(member): channel = client.get_channel("649275309396590626") await channel.send(f"{member} ist dem Server beigetreten!")

现在我遇到此错误:

File "C:/Users/Timo/PycharmProjects/Discord/Bot 1/Main.py", line 31, in on_member_join await channel.send(f"{member} ist dem Server beigetreten!") AttributeError: 'NoneType' object has no attribute 'send'

3 个答案:

答案 0 :(得分:1)

我认为问题在于您正在呼叫Bot.get_channel(id)而不是client.get_channel(id)

Bot是类(和导入的库)的名称,而client是该类的对象实例。

答案 1 :(得分:1)

client.get_guild(id)函数需要整数输入。如果未正确给出此值或ID无效,则该函数将返回None值。当您尝试使用NoneType对象发送内容时,会导致错误。由于NoneType对象没有“发送”功能。

我建议阅读文档:https://discordpy.readthedocs.io/en/latest/api.html?highlight=get_guild#discord.Client.get_guild

答案 2 :(得分:0)

我发现了问题,这是因为我将一个字符串设置为ID 而不是int。 现在,代码如下所示:

@client.event
async def on_member_join(member):
    channel = client.get_channel(649275309396590626)
    await channel.send(f"{member} ist dem Server beigetreten!")