首页 > 解决方案 > 当变量设置为 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

标签: pythondiscord

解决方案


问题是,当第二个文件导入第一个文件时,机器人开始工作。这意味着后面的client.run(TOKEN)行将永远不会被执行。

解决方案是不导入文件。相反,我们可以通过在文本文件中写入和读取来使两者进行通信。

示例:File2.py 写入“Go!” 需要时到 data.txt。

File1.py 在无限循环中读取 data.txt,当它读取“Go!”时,它会打印“Hey!!”。(在此之后清除 data.txt 很重要,否则它会发送垃圾邮件“嘿!!”,因为它仍然会显示“Go!”。)


推荐阅读