@Karpblch

Как сделать аргументы через пробел discord.py?

import os, sqlite3
from models import User
import logging 
import math
import discord
from discord.ext import commands 

class shop(commands.Cog):
    def __init__(self, bot):
        self.bot = bot

    @commands.command()
    async def bog(self, ctx, *,a,b):
        if ctx.channel.id == 1134985480241414254:
            print(a)
            print(b)         
                           
async def setup(bot):
    await bot.add_cog(shop(bot))

Код написан для cogs. Id сервера скрыт.

После написания команды *bog 12 12 бот не выводит a и b.
  • Вопрос задан
  • 138 просмотров
Решения вопроса 1
phaggi
@phaggi
лужу, паяю, ЭВМы починяю
  • вы должны четко понимать, что происходит с данными в коде и в т.ч. внутри библиотеки бота. Ощущение, что для вас это черный ящик. Вы читали код библиотеки бота, разобрались, как оно работает.
  • ощущение, что где-то в вашем коде подавлены ошибки при помощи try: except Exception, поэтому «ничего не происходит».
  • в аргументах функции после «звездочки» ожидаются именованные аргументы a и b. Поэтому функция должна возвращать ошибку об отсутствии аргументов, но где-то ошибка подавляется.
  • В-четвертых, можно попробовать использовать * вот так:

def bog(ctx, *arg):
    print(f'ctx = {ctx}')
    a, b = arg[-2:]
    print(a)
    print(b)
    
def call_bog(commands: str):
    args = tuple(commands.split(' '))
    bog(*args)

call_bog('one two three four')
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы