我希望我的机器人在运行命令时从提示列表中随机发送提示。
另外,我希望它只在某些时候显示提示。
我的意思是,例如,用户输入命令 Input
然后它应该说 ofcourse import React, {useEffect} from 'react'
import {useGlobalContext} from '../utils/context'
const Input = () => {
const {state, fetchAllBreeds} = useGlobalContext();
useEffect(()=>{
fetchAllBreeds();
}, [])
return (
<div>
<p>hello</p>
</div>
)
}
export default Input
。但是只有在命令运行到一定次数时才会显示提示。
所以如果命令运行了 5 次,那么我想要的是,我的命令每执行 5 次,就应该显示一个提示。
这不像我有一个发送随机提示的命令。
例如,如果我有一个取消禁止命令,它可以每运行 5 次命令发送一次提示,例如“您也可以使用踢和禁止命令。使用 hi
了解更多信息。”
我希望你能明白我想说的,这就是你需要的所有信息。
这是受到 Dank Memer 的启发
答案 0 :(得分:0)
只需以某种方式存储一个计数器并使用 random
模块来选择一个随机提示
如果对命令使用函数:
import random
hi_counter = 0
hi_tips = [
"You can also use kick and ban commands. Use `-help` for more info.",
"a tip",
"another tip",
"yet another tip",
]
@bot.command('hi')
async def hi(ctx):
global hi_counter, hi_tips
await ctx.send('hi')
hi_counter += 1
if hi_counter % 5 == 0:
await asyncio.sleep(1)
await ctx.send(random.choice(hi_tips))
如果您使用 Cog 来执行命令:
import random
class hi(commands.Cog):
def __init__(self, bot):
self.bot = bot
self.counter = 0
self.tips = [
"You can also use kick and ban commands. Use `-help` for more info.",
"a tip",
"another tip",
"yet another tip",
]
@commands.command('hi')
async def hi(self, ctx):
await ctx.send('hi')
self.counter += 1
if self.counter % 5 == 0:
await asyncio.sleep(1)
await ctx.send(random.choice(self.tips))
def setup(bot):
bot.add_cog(hi(bot))
如果你想为此做一个装饰器,你也可以这样做:
import random
def tips(times: int, tips: List[str]):
counter = 0
def decorator(func):
nonlocal counter, tips
async def wrapper(*args, **kwargs):
nonlocal counter, tips
ctx = func(*args, **kwargs)
counter += 1
if counter % times == 0:
await asyncio.sleep(1)
await ctx.send(random.choice(tips))
return wrapper
return decorator
# Use it like:
@bot.command('hi')
@tips(5, [
"You can also use kick and ban commands. Use `-help` for more info.",
"a tip",
"another tip",
"yet another tip",
])
async def hi(ctx):
global hi_counter, hi_tips
await ctx.send('hi')
return ctx # MAKE SURE TO RETURN `ctx` OR THE DECORATOR WON'T WORK