Python 3.x 使用discord.py将消息发送到指定通道时出错
当有人加入我的不和时,我在尝试向指定频道发送消息时遇到问题。 我得到了这个错误:Python 3.x 使用discord.py将消息发送到指定通道时出错,python-3.x,typeerror,discord.py-rewrite,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
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'
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'
我使用的是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!")
现在我有一个错误:
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'
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'
我认为问题在于您调用的是
Bot.get\u channel(id)
,而不是client.get\u channel(id)
Bot
是类(以及导入的库)的名称,而client
是该类的对象实例。我发现了问题,我设置了一个字符串作为ID
而不是int。
现在代码如下所示:
@client.event
async def on_member_join(member):
channel = client.get_channel(649275309396590626)
await channel.send(f"{member} ist dem Server beigetreten!")
client.get_guild(id)函数需要整数输入。如果未正确给出该值或id无效,函数将返回None值。当您尝试使用非类型对象发送内容时,会导致错误。因为非类型对象没有“发送”功能
我建议您阅读文档:您能向我们展示更多代码吗?Bot是什么样子的?这是Bot变量:import discord from discord.ext import commands from discord.ext.commands import Bot client=Bot(command_prefix=get_prefix)请将此添加到您的答案中,以便将信息格式化并呈现给未来的读者!好的,我已将其添加到问题中。如果我的答案解决了您的问题,请随意投票并接受我的答案。否则,请留下评论以澄清!我将其编辑为:
@client.event async def on_member_join(member):channel=client.get_channel(“649275309396590626”)等待频道。发送(f“{member}ist dem Server beigetreten!”)
现在我有一个错误:文件“C:/Users/Timo/PycharmProjects/Discord/Bot 1/Main.py”,第31行,在on_member_join wait channel.send中(f“{member}ist dem Server beigetreten!”)AttributeError:“NoneType”对象没有属性“send”
看起来该客户端不存在该频道。我已经检查了两次频道ID,并且机器人拥有该频道的所有权限。在检索频道后打印该频道。可能没有。是的,它没有打印任何频道