python - 当变量设置为 True 时,我无法让我的 Discord Bot 发送消息
问题描述
我有两个单独的 Python 文件。在第一个上,我有我的 Discord Bot。第二个有一些功能,当某些特定事件发生时,它会告诉 Discord Bot 发送消息。至少这就是我想要做的。这是第一个文件:
import discord
import asyncio
client = discord.Client()
var1 = False
async def my_background_task():
await client.wait_until_ready()
channel = client.get_channel(CHANNEL ID)
global var1
while var1 == True:
await channel.send_message("Hey")
var1 = False
await asyncio.sleep(1)
client.loop.create_task(my_background_task())
client.run(TOKEN)
这是第二个:
import new_test1
new_test1.var1 = True
目前的情况是我没有收到来自 Discord Bot 的消息。虽然我希望每次设置 var1 = True 时都会得到“嘿”。
我认为问题是它永远不会执行
new_test1.var1 = True
解决方案
问题是,当第二个文件导入第一个文件时,机器人开始工作。这意味着后面的client.run(TOKEN)
行将永远不会被执行。
解决方案是不导入文件。相反,我们可以通过在文本文件中写入和读取来使两者进行通信。
示例:File2.py 写入“Go!” 需要时到 data.txt。
File1.py 在无限循环中读取 data.txt,当它读取“Go!”时,它会打印“Hey!!”。(在此之后清除 data.txt 很重要,否则它会发送垃圾邮件“嘿!!”,因为它仍然会显示“Go!”。)
推荐阅读
- php - array_combine():两个参数应该有相同数量的元素,即使两个数组的长度相同
- apache-spark - 来自系统属性的 pyspark log4j 动态文件名
- lua - 返回函数作为字节码?
- r - 在 RStudio 中弹出消息框和组合框供用户输入
- angular - Angular:FormGroup 和 ngFor。如何收集数据?
- javascript - 使用 ComponentDidMount 从数据库挂载数据
- r - 在管道 R 中多次对 df 进行二次采样
- javascript - 对象作为子类中的类变量
- python - 使用 Window Batch 运行后关闭 Python Selenium 的命令行窗口
- r - 在使用 R 将它们绑定到数据帧之前,对列表中的每个数据文件进行随机采样