Proberen een !say-opdracht te maken in mijn discord.py herschrijfbot

Ik gebruik discord.py rewrite en wil een commando maken dat de tekst terugspuugt die na het commando “$say” komt. Ik keek in de documenten en online, maar kon geen up-to-date code vinden. Weet iemand hoe ik dit kan realiseren? Bedankt.


Antwoord 1, autoriteit 100%

Als je een commando wilt gebruiken, zorg er dan voor dat je commando’s importeert en maak dan een contextparameter aan. Zoals dit:

import discord
from discord.ext import commands
bot = commands.Bot(command_prefix='$')
@bot.command()
async def say(ctx, message=None)
    await ctx.send(message)
bot.run("TOKEN HERE")

Dit commando zou worden uitgevoerd door $say messageomdat toen we bot definieerden we het voorvoegsel instelden en toen we het commando instelden, deden we async def nameen uiteraard onze opdracht naam is zeg.

Dus in onenigheid wanneer je bot draait, zou je $say good morning!kunnen doen en de bot zal in dat kanaal antwoorden met good morning!.

ctx.send is een coroutine en daarom hebben we ervoor gewacht. En ctx definieert het kanaal terwijl message onze berichtparameter is.

Enkele nuttige bronnen:


Antwoord 2, autoriteit 100%

U moet * tussen CTX en Message = Geen plaatsen. bericht = Geen zal het bericht na de opdracht bekijken.

Ik gebruik dit:

@bot.command()
async def say(ctx,*,message=None)
  await ctx.send(message)

Antwoord 3

Hier heb ik een zegcommando dat alleen werkt met de opgegeven gebruikers-ID.

async def speak(ctx, *, text):
    if ctx.message.author.id == 621102107621326878:
        message = ctx.message
        await message.delete()
        await ctx.send(f"{text}")
    else:
        await ctx.send('lol mate what u doin that isn\'t a real command')

Als u een normale wilt, doe dit dan:

async def speak(ctx, *, text):
    message = ctx.message
    await message.delete()
    await ctx.send(f"{text}")

Antwoord 4

@bot.command()
async def say(ctx, *, question):
    await ctx.message.delete()
    await ctx.send(f'{question}')

Ik stuur dit alleen omdat u dit kunt gebruiken en laat het het bericht Auteurs verwijderen. Dan verzendt het ook elk type bericht na uw opdracht.


Antwoord 5

Probeer dit, dit is wat ik gebruik

@client.command
async def say(ctx, *, text=''):
    if text == '':
        ctx.send("You need to say something")
    else:
        ctx.send(text)
        ctx.message.delete()

Antwoord 6

De meest eenvoudige code die ik heb geschreven, is

@bot.command()
async def say(ctx, *, message):
    try:
        await ctx.send(message)
    except:
        await ctx.send("Please Give Some Message!")

Antwoord 7

@client.command
async def say(ctx, *, text=''):
if text == '':
    ctx.send("Say Something First Noob!")
else:
await ctx.send(text)

Merk nu op dat u ctx.send niet doet Wacht op ctx als u dat niet doet, dan zal 100% zeggen dat er nooit op werd gewacht

Other episodes