我一直在尝试使用discord.py库为Discord创建一个bot,但是当我运行该程序时,它没有按预期发送消息。这是一个简单的漫游器,它假设每10分钟向频道发送一条消息。我在命令行中没有收到任何错误消息,并且似乎看不到任何明显的错误?任何帮助将不胜感激。
import asyncio
client = discord.Client()
async def my_background_task():
await client.wait_until_ready()
counter = 0
channel = discord.Object(id='my channel ID goes here')
while not client.is_closed:
counter += 1
await message.channel.send("TEST")
await asyncio.sleep(5) # task runs every 60 seconds
@client.event
async def on_ready():
print('Logged in as')
print(client.user.name)
print(client.user.id)
print('------')
client.loop.create_task(my_background_task())
client.run('My token goes here')
答案 0 :(得分:0)
如果频道ID是字符串,则It should be an integer.
打开它:
self
进入:
channel = discord.Object(id='my channel ID goes here')
如果这不能解决您的问题,请尝试将channel = discord.Object(id=101029321892839) # an example ID
设置为'message.channel.send'
,而'channel.send'
应该是
client.is_closed
答案 1 :(得分:0)
代替client.loop.create_task(my_background_task())
,只需将后台函数放在on_ready
事件中。并取出 await client.wait_until_ready()
并将该函数也放入 on_ready
事件中。
我还更改了客户端变量,去掉了不必要的代码,并添加了一些模块。
import asyncio, discord
from discord.ext import commands
client = commands.Bot(command_prefix = ".") # If you don't want a prefix just take out the parameter.
async def my_background_task():
channel = discord.Object(id='my channel ID goes here')
while True:
await channel.send("TEST")
await asyncio.sleep(5) # task runs every 60 seconds
@client.event
async def on_ready():
print('Logged in as')
print(client.user.name)
print(client.user.id)
print('------')
my_background_task()
client.run('My token goes here')
此外,在以后发布问题时,请标记 python 版本,因为我不知道它是哪个版本,然后这个和其他答案可能是错误的。