Discord.py 正常运行时间



使用discord.py,我正在尝试制作一个uptime脚本,我不确定它是否会是一个f string(如等待ctx.send(f"client.uptime")或其他东西,

我是discord.py的新手,刚刚开始学习,有人可以帮忙吗?

所以我实际上也在想同样的事情,这里的一个答案给了我这个想法。

我的一部分有点过于冗长,但如果你是新手,它应该会有所帮助。为获得正常运行时间本身而做的一些事情并没有深入到太深,但代码基本上只是返回一个字符串,该字符串在 h:m:s 中告诉您机器人运行了多长时间。

假设你作为一个齿轮来做这件事,这就是我是如何做到的 (注意:如果您只是像在齿轮外格式化命令一样格式化它,这将在齿轮之外工作。逻辑不会改变,只是命令是如何形成的(

import discord ----------#imports discord.py
import datetime, time ---#this is the important set for generating an uptime
from discord.ext import commands
#this is very important for creating a cog
class whateverYouNameYourCog(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.Cog.listener()
async def on_ready(self):
print(f'{self} has been loaded') 
global startTime --------#global variable to be used later in cog
startTime = time.time()--# snapshot of time when listener sends on_ready
#create a command in the cog
@commands.command(name='Uptime')
async def _uptime(self,ctx):
# what this is doing is creating a variable called 'uptime' and assigning it
# a string value based off calling a time.time() snapshot now, and subtracting
# the global from earlier
uptime = str(datetime.timedelta(seconds=int(round(time.time()-startTime))))
await ctx.send(uptime)
#needed or the cog won't run
def setup(bot)
bot.add_cog(whateverYouNameYourCog(bot))    enter code here

您的示例是ctx.send(f"{client.uptime}")f 字符串中的大括号是变量所在的位置。但是,我认为 discord.py 没有.uptime功能。您需要节省机器人启动的时间,然后在运行命令时计算时差。你会使用这样的东西。

import discord, datetime, time
from discord.ext import commands
@commands.command(pass_context=True)
async def uptime(self, ctx):
current_time = time.time()
difference = int(round(current_time - start_time))
text = str(datetime.timedelta(seconds=difference))
embed = discord.Embed(colour=0xc8dc6c)
embed.add_field(name="Uptime", value=text)
embed.set_footer(text="<bot name>")
try:
await ctx.send(embed=embed)
except discord.HTTPException:
await ctx.send("Current uptime: " + text)

相关内容

  • 没有找到相关文章

最新更新