用Python编程Discord机器人-如何使其自动发送消息?

用Python编程Discord机器人-如何使其自动发送消息?,python,discord.py,Python,Discord.py,我想让我的机器人每十分钟自动向一个频道发送一个图像。这是我的密码: def job(): channel = client.get_channel(803842308139253760) channel.send(file=discord.File(random.choice('image1', 'image2', 'image3)) schedule.every(10).minutes.do(job) while True: schedule.run_pending() t

我想让我的机器人每十分钟自动向一个频道发送一个图像。这是我的密码:

def job():
  channel = client.get_channel(803842308139253760)
  channel.send(file=discord.File(random.choice('image1', 'image2', 'image3))

schedule.every(10).minutes.do(job)

while True:
  schedule.run_pending()
  time.sleep(1)

我知道时间表是有效的。但由于某种原因,它无法发送消息。我收到以下错误:
AttributeError:'NoneType'对象没有属性'send'
。我是编程新手,所以如果有任何见解,我将不胜感激

之所以会出现此错误,是因为通道变量为
None
(a
NoneType
没有任何属性/方法),因为通道不在内部缓存中,所以会阻塞整个线程,因此它永远不会加载。我猜我可以修复您的代码,但对于后台任务来说,这是一个非常糟糕的解决方案。幸运的是,
discord.py
附带了一个内置的扩展来完成这些事情,下面是一个例子:

来自discord.ext导入任务
@任务。循环(分钟=10)#你可以通过秒、分钟或小时
异步def发送_映像(通道:discord.TextChannel):
image=discord.File(“此处的路径”)
等待channel.send(文件=图像)
#启动任务(您也可以在“on_ready”事件上执行此操作,以便在bot运行时启动)
@client.command()
异步def启动(ctx):
channel=client.get\u通道(此处为ID\u)
发送图像。启动(通道)
#使用“on_ready”事件
@客户端事件
_ready()上的异步定义:
等待客户端。等待_直到_ready()#等待内部缓存加载完成
channel=client.get\u通道(此处为ID\u)
发送图像。启动(通道)
@client.command()
异步def停止(ctx):
发送图像。停止()
参考:

谢谢您的帮助!我把我的
random.choice('image1','image2','image3')
放在“path here”部分,它给了我一个错误:
TypeError:choice()接受2个位置参数,但有3个是给定的
它需要是列表或元组,即
random.choice([“image1”,“image2”,“image3]))
如果helpedIt现在起作用,请记住接受答案!再次感谢!!不用担心:),很乐意帮助