python - discord.ext 在正确通道中发送和设置状态的问题
问题描述
我正在使用 discord.py,然后是 discord.ext 模块。我有一个很长的硒代码在while True
循环中运行。这是其中的一部分:
@bot.command()
async def start(ctx):
driver.install_addon(r'some_extension.xpi')
channel = bot.get_channel(791352165393498203)
user = bot.get_user(257428782233812993)
while True:
await bot.change_presence(status=Status.online)
driver.get('some_link')
driver.maximize_window()
time.sleep(5)
try:
driver.find_element_by_xpath('//*[@id="pageSize"]').click()
except NoSuchElementException:
await ctx.channel.send(f" We had an Exception, please go check")
time.sleep(60)
driver.refresh()
time.sleep(5)
driver.find_element_by_xpath('//*[@id="pageSize"]').click()
time.sleep(1)
await ctx.channel.send(f"Problem solved")
大部分代码都可以正常工作,但有两个主要问题,我没有遇到异常。
首先,
await ctx.channel.send(f"We had an Exception, please go check")
应该在我上面所说的频道中发送,但事实并非如此。pycharm
表示从不使用通道变量,这不应该是这种情况。其次,
await bot.change_presence(status=Status.online)
它不会使机器人永久显示为在线。
解决方案
- Just use
channel.send()
withoutctx
,ctx
是一堆关于使用的命令(作者、频道等)的信息。 - 您无需将状态更改为在线,它会在您启动机器人时自动设置。
哦,我建议使用asyncio.sleep()
而不是time.sleep()
因为,当你使用time.sleep()
机器人时,此时机器人将停止工作,并且不会响应任何命令/事件。
推荐阅读
- go - 如何将结构转换为平面路径数组?
- javascript - 无法将列表项添加到 HTML 文档
- ios - Apple 的 Vision VNContoursObservation 耗时是 OpenCV findContours 的 715 倍
- postgresql - Postgres 逻辑复制 - 何时生成类型消息?
- v8 - V8:如何在 Persistent 处理程序上使用 Set 方法?
- python - 如何在烧瓶服务器上显示图像?
- reactjs - 这是使用 React Native、Expo 和 Reeact Native Paper 使用 API 的正确方法吗?
- c++ - 平方函数图 qCustomPlot QT
- reactjs - 我怎么能保证某些东西是用状态渲染的,然后清除状态,所以下次它就不存在了?
- amazon-sns - 我的 AWS SNS 服务如何利用另一个账户的 10DLC?