在使用 discord.py
库时,遇到“事件循环关闭错误”通常是由于异步操作在事件循环关闭后仍在尝试执行导致的。以下是一些基础概念和相关解决方案:
以下是一个示例代码,展示如何安全地从文件加载令牌并避免事件循环关闭错误:
import discord
import asyncio
async def load_token(file_path):
try:
with open(file_path, 'r') as file:
token = file.read().strip()
return token
except FileNotFoundError:
print(f"Token file not found: {file_path}")
return None
async def main():
token = await load_token('token.txt')
if token:
client = discord.Client()
@client.event
async def on_ready():
print(f'Logged in as {client.user}')
await client.start(token)
else:
print("Failed to load token.")
# 确保在事件循环中运行主函数
if __name__ == "__main__":
loop = asyncio.get_event_loop()
try:
loop.run_until_complete(main())
finally:
loop.close()
load_token
函数使用 async with
来确保文件操作在异步上下文中执行。__main__
部分,显式获取并管理事件循环,确保所有异步任务完成后再关闭循环。通过这种方式,可以有效避免因事件循环提前关闭导致的错误,并确保程序的稳定性和可靠性。
领取专属 10元无门槛券
手把手带您无忧上云