当前位置: 首页 > 知识库问答 >
问题:

在Python中,如何让discord bot在特定时间发送3条不同的消息,只发送一次,而不与我的主代码冲突?

尉迟冯浩
2023-03-14

问题是我想将“发送消息”命令集成到一个现有代码中,该代码与主代码冲突。

我尝试过循环消息,例如:等待5分钟,然后每100分钟发送一次“你的消息”,但它进入循环,不会加载我的主代码。

切换订单结果:

主代码之前的“循环消息”代码:在我在我的discord频道上收到我想要的消息后,我按ctrl^C中止,直到我的bot开始加载,但加载后最终由于中止而再次停止$bb命令从未工作,因为主代码未加载。

主代码后面的“循环消息”代码:我的机器人自动加载,工作正常,但从来没有加载“循环消息”。当我ctrl^C,我收到'协程从未等待.'错误。我从来没有收到消息,因为'循环消息'没有加载。

我需要什么?我需要同时运行这两个命令而不冲突,机器人回答我的问题,并在19.30发送自动消息,然后机器人仍然可以回答我的问题。

我希望bot发送多条延迟消息,例如19.30发送的msg1和19.33发送的msg2,在指定时间仅发送一次,同时不中断其应答“$bb message”命令的能力。

以下是我的代码,其中没有“循环消息”代码:

import discord,os

from neuralintents import GenericAssistant

chatbot = GenericAssistant('intents.json')
chatbot.train_model()
chatbot.save_model()

print("Bot is active. . .")

client = discord.Client()

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    if message.content.startswith("$bb"):
        response = chatbot.request(message.content[4:])
        await message.channel.send(response)

client.run("TOKEN")

共有1个答案

巫新知
2023-03-14

尝试使用线程,下面是一个示例

import time
import threading
# Only the module 'threading' is needed (the module 'time' is for example purposes)

# function with the loop inside of it
def startloop():
  while True:
    print("loop")
    time.sleep(1)

# Start the function with no arguments
threading.Thread(target=startloop).start()

# Start a thread with arguments
# threading.Thread(target=startloop, args=('arg1', 'arg2')).start()

# make sure the main thread is still running
print("Main thread is still running!")
 类似资料:
  • 我想创建一个不和谐机器人,每天在特定的时间发送2条消息。下面的代码将使消息进入一个循环,例如每5秒发送一条消息。我如何设置每天发送消息的具体时间,例如,消息1在下午6点,消息2在上午10点。我在这里找到了这段代码,但是没有找到我想要的。

  • 我正在尝试创建一个仅在共享内存中具有文件的小文件服务器。客户端应该向服务器发送命令,如 CREATE、DELETE 等。但是,我还没有到那个阶段。 我已经准备了一个服务器和一个客户端。服务器接受套接字,并为每个客户端连接创建一个新线程(要求)。 当我启动客户端时,我可以成功连接到服务器并发送将被接收的消息。但是,这只能工作一次。发送我的命令后,服务器将不会收到任何其他命令。 我尝试使用换行符捕获消

  • 我使用quartz调度程序在不同的时间段向不同的报告发送错误消息。我创建了一个每小时运行一次的调度器,它将执行第二个调度器(此处显示的代码)。必须发送消息的时间是从数据库中获取的,并在exp变量中传递。我只能获取数据库中第一行的值,还可以获取一个org。石英ObjectAlreadyExistsException:无法存储作业:“q3Job”。cronJob3',因为已经存在一个具有此标识的。”错

  • 如何要求机器人将消息发送到与机器人接收命令不同的另一个通道(特定通道)? 假设bot在通道中收到消息,如果操作完成,则bot发送给通道。 code:

  • 我希望我的机器人每天在特定的时间发送一条消息,运行另一个机器人的命令。例如,我想让我的机器人写“s!t"每天凌晨2点在特定频道上,并删除机器人发送的消息。我该怎么做?

  • 我想向我的whatsapp收件人发送whatsapp消息,但whatsapp收件人需要通过向您在沙盒中选择的电话号码发送“加入[关键字]”whatsapp消息来选择加入 我想发送消息而不需要发送“加入[关键字]”WhatsApp消息