【发布时间】:2021-03-31 17:47:37
【问题描述】:
我是 discord.py 的新手,想了解一些功能。如何在不运行机器人的情况下执行功能?你看,我想从其他上下文中调用一些机器人函数。我不喜欢我的机器人读取事件或类似的东西,例如,只要我的程序调用它就创建一个语音通道。我怎样才能实现这样的功能?也许我应该考虑为 discord API 编写自定义处理程序,例如 requests lib?
【问题讨论】:
标签: python-3.x discord.py
我是 discord.py 的新手,想了解一些功能。如何在不运行机器人的情况下执行功能?你看,我想从其他上下文中调用一些机器人函数。我不喜欢我的机器人读取事件或类似的东西,例如,只要我的程序调用它就创建一个语音通道。我怎样才能实现这样的功能?也许我应该考虑为 discord API 编写自定义处理程序,例如 requests lib?
【问题讨论】:
标签: python-3.x discord.py
您的机器人必须登录 Discord 才能使用 api 进行操作。
我建议您在不同的线程中运行机器人并从主胎面运行 coro。 像这样:
这是你的机器人所在的文件:
from discord.ext.commands import Bot
import threading
import discord
client = Bot(command_prefix="!")
@client.event
async def on_ready():
print("Ready")
async def create_voice(guild_id):
await client.wait_until_ready() # Waits for bot is logged in and the cache is loaded
guild = client.get_guild(guild_id)
await guild.create_voice_channel("Hallo")
print("Done")
thread = threading.Thread(target=client.run, args=["Token"])
thread.start()
主文件:
import bot_run
import asyncio
loop = asyncio.get_event_loop()
asyncio.run_coroutine_threadsafe(bot_run.create_voice(guild_id), loop)
希望这会有所帮助:D
【讨论】: