随机提示。不和谐.py

时间:2021-06-27 04:08:33

标签: discord discord.py

我希望我的机器人在运行命令时从提示列表中随机发送提示。

另外,我希望它只在某些时候显示提示。

我的意思是,例如,用户输入命令 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 的启发

1 个答案:

答案 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