У меня есть команда бота, к которой я хотел бы добавить необязательный аргумент ключевого слова, и мне нужен совет по этому поводу.
Пока что, если вы введете! Repeat «1» «2» «3», он ответит: 1 2 3
Я хотел бы добавить необязательный аргумент ключевого слова «повторы», который вы могли бы добавить после начальной команды, и он будет указывать боту на повторение своего ответа указанное количество раз.
Юникод — сложный стандарт с множеством кодировок, наиболее распространенным из которых является UTF-8.
Но если вы не укажете ключевое слово, оно будет работать как обычно
EDIT: это просто игрушечный пример. Довольно часто с функциями — вы хотите позволить опытному пользователю сделать что-то необычное с kwargs, не заставляя всех пользователей взаимодействовать с этими функциями. Мне интересно найти способ сделать это с помощью команды discord, которая уже принимает любое количество аргументов.
Есть ли способ добавить дополнительную функциональность, не разбудив ее, чтобы каждый пользователь мог взаимодействовать с ней, передавая ее как первую переменную или что-то подобное?
Group discord commands for better organisation in discord.py 2
Источник: question-it.com
Аргументы в командах discord
Делаю небольшого бота-переводчика для дискорда. Проблема в том, что он принимает на вход только первое слово, остальное просто пропускает. Каким образом можно сделать, чтобы он принимал все предложение в один аргумент, а не только первое слово?
async def text(self, ctx, arg): if arg == »: await ctx.send(‘Использование: «!!text «‘) else: translate = translate_req + » + ‘lang=’ + self.lang response = requests.get(translate) if response: json_response = response.json() await ctx.send(json_response[‘text’][0])
Отслеживать
19.3k 5 5 золотых знаков 20 20 серебряных знаков 55 55 бронзовых знаков
Источник: ru.stackoverflow.com
Как принять аргумент в команду после её использования в discord.py?
У меня есть код (ниже), и я хочу чтобы человек писать команду (допустим !test1) без аргументов. И после нажатия кнопки бот предлагал ему ввести id или упоминание человека (отдельным сообщением). И приняв этот id он делал с этим человеком те же действия если я бы написал команду: !test1 .
Можете помочь с моим вопросом на примере моего или другого кода?
- Вопрос задан более года назад
- 768 просмотров
Комментировать
Решения вопроса 0
Ответы на вопрос 2

Pycord Slash Command + Option #shorts
Тебе нужно для каждого пользователя хранить команду, которую он сейчас выполняет, хранить шаг (номер аргумента), на котором он сейчас находится, и хранить ранее введённые данные.
И тогда при получении сообщения:
1. проверять, не является ли сообщение командой, если является — обрабатывать отдельно.
2. определить, какой шаг обработки какой команды сейчас активен для этого пользователя
3. интерпретировать введённое сообщение соответственно.
Ответ написан более года назад
А если на практике в коде?

Telmor, за кодом туда.
Разве что ты сможешь показать какой-то свой код, тогда его и будем обсуждать.
Vindicar, Я в вопросе сразу накинул примерный код
import discord from discord.embeds import Embed from discord.ext import commands from discord.ext.commands import Bot from discord import member import asyncio import os import string import json from discord import Activity, ActivityType from discord.utils import * import io import time import string from discord_components import * from dislash import * from dislash import InteractionClient, ActionRow, Button, ButtonStyle import requests import random import re
Все мои импорты

Telmor, твой код только обрабатывает команду.
Там нет ни хранилища состояния (СУБД или хотя бы тупо словаря), ни диспетчера обработки сообщений — кода, который по id пользователя узнаёт в хранилище состояний, какой аргумент для какой команды сейчас этим пользователем вводится, а потом передаёт управление соответствующему обработчику. В целом, гугли в сторону «конечный автомат», он же «state machine».
А вообще, возвращаюсь в первому пункту: имеет ли это смысл для решаемой задачи? Добавить роль вручную почти наверняка окажется проще и быстрее, чем использовать команду бота.
Vindicar, Может быть и да. Но я поставил себе задачу сделать команду такую хотя бы 1

Так же, как вы получаете действие с кнопки:
message = await bot.wait_for(‘message’, check=lambda message: message.author == ctx.author and message.channel == ctx.channel) # получаем сообщение от автора команды в исходном канале role = await commands.RoleConverter().convert(ctx, message.content) # получаем роль через конвертер await ctx.send(role.name) # показываем имя роли в чате

Ответ написан более года назад