首页 > 编程问答 >仅适用于 Discord.py 中一个用户 ID 的变量

仅适用于 Discord.py 中一个用户 ID 的变量

时间:2024-08-01 03:55:12浏览次数:13  
标签:python variables discord.py bots

因此,我试图在某人执行“/logstart”和“/logstop”时为他们创建一个秒表,但我希望多个人能够在不受干扰的情况下启动和停止自己的秒表。

@bot.command(name='logstart')
async def logstart(ctx, arg1):
    await ctx.message.delete()
    await ctx.send('Log has Started')
@bot.command(name='logstop')
async def logstop(ctx):
    await ctx.message.delete()
    await ctx.send('FLIGHT LOG\nDuration: stopwatch time\nFlight Plan: argument1')

用户执行“/logstart EGCC( DEP) EGLL(ARR)": 机器人:日志已启动 用户执行“/logstop”
机器人: 飞行日志
持续时间:%stopwatch time%
飞行计划:EGCC(DEP) EGLL(ARR)

我尝试搜索文档以了解如何创建一个局部变量但没有找到太多


当然,我可以帮助你解决这个问题。你可以在 Discord.py 中使用字典来为每个用户存储秒表数据。以下是操作方法:

import time
from discord.ext import commands

bot = commands.Bot(command_prefix='/')

# 用来存储每个用户秒表数据的字典
# 格式:{user_id: start_time}
stopwatch_data = {}

@bot.command(name='logstart')
async def logstart(ctx, *, flight_plan: str):
    """启动秒表并存储飞行计划。

    Args:
        flight_plan: 用户提供的飞行计划字符串。
    """
    await ctx.message.delete()
    user_id = ctx.author.id
    stopwatch_data[user_id] = {
        "start_time": time.time(), 
        "flight_plan": flight_plan
    }
    await ctx.send(f'{ctx.author.mention} 日志已启动。', delete_after=5)

@bot.command(name='logstop')
async def logstop(ctx):
    """停止秒表并计算持续时间。"""
    await ctx.message.delete()
    user_id = ctx.author.id
    start_data = stopwatch_data.get(user_id)
    if start_data:
        start_time = start_data["start_time"]
        flight_plan = start_data["flight_plan"]
        duration = time.time() - start_time
        minutes, seconds = divmod(int(duration), 60)
        formatted_duration = f"{minutes:02d}m {seconds:02d}s"
        await ctx.send(
            f"**飞行日志 {ctx.author.mention}**\n"
            f"持续时间:{formatted_duration}\n"
            f"飞行计划:{flight_plan}"
        )
        del stopwatch_data[user_id] # 重置数据
    else:
        await ctx.send(f'{ctx.author.mention} 你还没有启动日志。', delete_after=5)

bot.run('YOUR_BOT_TOKEN')

说明:

  1. stopwatch_data 字典:
  2. 此字典用于存储每个用户的秒表数据。
  3. 它使用用户 ID 作为键,并将字典存储为值,该字典包含开始时间和飞行计划。

  4. /logstart 命令:

  5. 它现在获取 flight_plan 作为参数。
  6. 当用户运行此命令时:

    • 它将消息删除。
    • 它会获取用户的 ID。
    • 它会在 stopwatch_data 中存储当前时间(作为开始时间)和飞行计划,并使用用户 ID 作为键。
  7. /logstop 命令:

  8. 当用户运行此命令时:
    • 它将消息删除。
    • 它会获取用户的 ID。
    • 它会检查 stopwatch_data 字典中是否存在用户的 ID。
    • 如果找到:
      • 它会计算持续时间。
      • 它会向用户发送包含持续时间和飞行计划的消息。
      • 它会从 stopwatch_data 中删除用户的数据。
    • 如果未找到:
      • 它会向用户发送消息,告知他们还没有启动秒表。

使用此设置,多个用户现在可以独立使用秒表命令,而不会相互干扰数据。每个用户的数据都存储在 stopwatch_data 字典中,并使用其唯一的用户 ID 进行标识。

标签:python,variables,discord.py,bots
From: 78818157

相关文章

  • 解决python自动化操作异常处理的问题
    在python自动化领域,往往要用到pyautogui,pywin32等模块实现自动化操作。然而,这种自动化操作,本身具有一定的局限性,其中最主要的一个问题就是,一旦执行结果不按照脚本预设的来执行,往往会抛出异常,导致程序中断。解决这个问题,主要有这么几种思路:第一,每一次操作后分情况讨论。这种方......
  • Python爬虫入门03:用Urllib假装我们是浏览器
    文章目录引言Urllib库简介Request模块详解Error模块与异常处理Parse模块与URL解析Robotparser模块模拟浏览器请求使用Request方法添加请求头信息代码示例1.设置请求URL和请求头2.定义请求参数并转换为适当的格式3.使用Request方法封装请求4.发送请求并获取响应常用......
  • 请以零基础学Python 之 第二十讲 分组和贪婪匹配
    当我们处理字符串时,有时候需要根据特定的模式来分割或者提取信息。Python提供了强大的正则表达式库re,可以帮助我们实现这些复杂的字符串操作。本篇博客将介绍两个常用的正则表达式技巧:分组和贪婪匹配。分组(Grouping)在正则表达式中,分组是将多个模式单元组合为一个单元,以便......
  • 零基础学python 之 第十九讲 正则表达式
    当你开始学习Python编程时,正则表达式是一项非常强大的工具,用于处理文本数据中的模式匹配和搜索。本篇博客将带你从零开始学习如何在Python中使用正则表达式。1.什么是正则表达式?正则表达式(RegularExpression)是用于描述字符串模式的一种工具,可以用来匹配、查找、替换符合特......
  • python之贪吃蛇
    废话不多说,直接上代码(确保已经安装pygame)importpygameimportrandom#基础设置#屏幕高度SCREEN_HEIGHT=480#屏幕宽度SCREEN_WIDTH=600#小方格大小GRID_SIZE=20#颜色设置WHITE=(255,255,255)BLACK=(0,0,0)GREEN=(0,255,0)#初始化Pyg......
  • Python - Context Managers
    withstatementHereisthesyntaxofthewithstatement:withexpressionasvar:statementsTheexpressionshouldbeacontextmanagerobject,oritshouldproduceacontextmanagerobject.Whenthiswithstatementisexecuted,thefirstthingthat......
  • python装饰器
    一前言环境:win10python3.10二函数中的函数如果定义了一个函数A,现在想在不影响函数A原先功能的情况下,新增加一些额外的功能,怎么办,下面是一个例子如上,本来原先执行test_except那句话只会打印over那句话,但现在执行test_except却会输出一些另外的东西这其中有个巧妙地东西就......
  • Python - Built-in Exceptions: Python Exceptions Class Hierarchy
     Figure20.4:Built-inexceptionsTheclassBaseExceptionisthebaseclassofallthebuilt-inexceptionclasses.FromBaseException,fourclassesnamedException,SystemExit,KeyboardInterruptandGeneratorExitarederived.Alltheremainingbuilt-in......
  • Python - Strategies to handle exceptions in your code
    Therearetwoapproachesthatcanbefollowedwhenwewanttodealwithexceptionsthatoccurduetounusualevents:LBYL-LookBeforeYouLeapEAFP-EasiertoAskforForgivenessthanPermissionIntheLBYLapproach,weavoidexceptions,whileinthe......
  • 全网最适合入门的面向对象编程教程:29 类和对象的Python实现-断言与防御性编程和help函
    全网最适合入门的面向对象编程教程:29类和对象的Python实现-断言与防御性编程和help函数的使用摘要:在Python中,断言是一种常用的调试工具,它允许程序员编写一条检查某个条件。本文主要介绍了断言的应用场景和特点以及assert语句的使用,同时介绍了防御性编程和help()函数......