试图做一个不和谐的机器人与discord.py,获取错误
问题描述:
我试图让机器人每隔几秒钟发送一条消息从一组预定义的消息。试图做一个不和谐的机器人与discord.py,获取错误
import discord
import asyncio
import random
client = discord.Client()
async def background_loop():
await client.wait_until_ready()
while not client.is_closed:
channel = client.get_channel("channel id here")
messages = ["Hello!", "How are you doing?", "Howdy!"]
await client.send_message(channel, random.choice(messages))
await asyncio.sleep(120)
client.loop.create_task(background_loop())
client.run("discord token here")
但是,当我尝试运行它,我得到这个错误在控制台中,并没有消息发送到聊天。
/usr/bin/python3.5 /root/PycharmProjects/untitled/Loop.py
Task exception was never retrieved
future: <Task finished coro=<background_loop() done, defined at /root/PycharmProjects/untitled/Loop.py:8> exception=InvalidArgument('Destination must be Channel, PrivateChannel, User, or Object. Received NoneType',)>
Traceback (most recent call last):
File "/usr/lib/python3.5/asyncio/tasks.py", line 239, in _step
result = coro.send(None)
File "/root/PycharmProjects/untitled/Loop.py", line 13, in background_loop
await client.send_message(channel, random.choice(messages))
File "/usr/local/lib/python3.5/dist-packages/discord/client.py", line 1145, in send_message
channel_id, guild_id = yield from self._resolve_destination(destination)
File "/usr/local/lib/python3.5/dist-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
答
我写一个辅助函数从客户端
def get_channel(channels, channel_name):
for channel in client.get_all_channels():
print(channel)
if channel.name == channel_name:
return channel
return None
client = discord.Client()
general_channel = get_channel(client.get_all_channels(), 'general')
await client.send_message(general_channel, 'test msg')
+0
仍然返回一个NoneType – mast3rd3mon
获得信道对象解决了这个'discord.errors.InvalidArgument:目标必须是通道,PrivateChannel,用户或对象。收到NoneType' 检查您要将您的请求发送到哪里 - 确保您拥有正确的频道ID? – CynePhoba12
你似乎是正确的,问题是我认为频道ID指的是频道的名称。现在全部修好了。 – Museman