You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为定时@角色的Discord机器人添加启停命令?

Discord机器人定时任务启停实现及错误修复

一、实现聊天命令启停定时任务

假设你使用的是discord.py库,核心思路是用全局变量存储定时任务实例,通过命令控制其创建与取消:

1. 基础准备

先导入依赖并初始化机器人:

import discord
from discord.ext import commands
import asyncio

intents = discord.Intents.default()
intents.message_content = True
bot = commands.Bot(command_prefix='!', intents=intents)

# 全局变量:存储定时任务实例,初始为None
remind_task = None

2. 编写提醒逻辑

定义@指定角色的函数:

async def remind_target_role(channel, role_id):
    target_role = channel.guild.get_role(role_id)
    if target_role:
        await channel.send(f"{target_role.mention} 定时提醒触发!")

3. 启动定时任务的命令

@bot.command()
async def start_remind(ctx, role_id: int):
    global remind_task
    # 检查是否已有任务在运行
    if remind_task is not None and not remind_task.done():
        await ctx.send("定时任务已在运行,无需重复启动")
        return
    # 创建循环任务:每40分钟执行一次提醒
    async def loop_remind():
        while True:
            await remind_target_role(ctx.channel, role_id)
            await asyncio.sleep(40 * 60)
    remind_task = asyncio.create_task(loop_remind())
    await ctx.send("定时任务已启动,将每40分钟@指定角色")

4. 停止定时任务的命令

@bot.command()
async def stop_remind(ctx):
    global remind_task
    # 检查是否有运行中的任务
    if remind_task is None or remind_task.done():
        await ctx.send("当前没有运行的定时任务")
        return
    # 取消任务并重置全局变量
    remind_task.cancel()
    remind_task = None
    await ctx.send("定时任务已停止")

5. 运行机器人

bot.run("你的机器人令牌")

使用时,发送!start_remind 角色ID启动任务,发送!stop_remind停止任务。

二、修复"name 'remindcmd' is used prior to global declaration"错误

这个错误的本质是你在使用remindcmd变量之后才声明它为全局变量,正确的写法是先声明全局,再操作变量:

错误示例

@bot.command()
async def some_command(ctx):
    remindcmd = asyncio.create_task(...)  # 先使用变量
    global remindcmd                      # 后声明全局,触发报错

正确写法

@bot.command()
async def some_command(ctx):
    global remindcmd                      # 先声明该变量为全局
    remindcmd = asyncio.create_task(...)  # 再对变量进行赋值/操作

把你代码中涉及remindcmd的函数都按这个逻辑调整,就能解决该报错。

内容的提问来源于stack exchange,提问作者Yozy Opto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 23:55:18