Форум сайта python.su
привет подскажите пожалуйста как тут вызвать команду из модуля
@bot.command(name='hi3') async def SendMessage(ctx): await weatherV(ctx)
elif menu_item == 'test': print('test pushed') async def endMessagehi(ctx): await package.discordbot.discordbot.weatherV(ctx)
Отредактировано Genabox (Янв. 24, 2023 22:26:15)
Офлайн
module a
def testA(ctx): async def SendMessagehi(ctx): await weatherV(ctx) SendMessagehi(ctx)
elif menu_item == 'test': print('test pushed') package.discordbot.discordbot.testA(ctx)
d:\discord\package\discordbot\discordbot.py:101: RuntimeWarning: coroutine ‘testA.<locals>.SendMessagehi’ was never awaitedв чем моя ашибка?
SendMessagehi(ctx)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
def testA(ctx): async def SendMessagehi(ctx): await weatherV(ctx) await SendMessagehi(ctx)
def testA(): ctx='weatherV' weatherV(ctx) print('test_______________A')
elif menu_item == 'test': print('test pushed') async def test(ctx): await weatherV(ctx) test(ctx)
Отредактировано Genabox (Янв. 25, 2023 04:17:00)
Офлайн
import invoke def testA(): c = invoke.context print('test_______________A') c.Context.run(command='weatherV')
Отредактировано Genabox (Янв. 25, 2023 06:49:32)
Офлайн
help, i need help!
Офлайн
GenaboxВ каком месте кода запускается асинхронная функция?
help, i need help!
Офлайн
Опривет сенкс что откликнулся
у меня есть обычный nextcord bot,
@bot.event async def on_ready(): print(f"@ === -- Bot succesfull logined at: {bot.user.name} -- === @") @bot.command(name='hi') async def SendMessagehi(ctx): await ctx.send('Hello') bot.run(token)
mean, either use Bot.invoke (or Context.invoke) or move the function of the command into a function and import it to wherever else you need to use it
https://discordpy.readthedocs.io/en/latest/ext/commands/api.html#discord.ext.commands.Context.invokeа это типа пример уже готового
async def invoke(self, ctx: Context[BotT], /) -> None: await self.prepare(ctx) # terminate the invoked_subcommand chain. # since we're in a regular command (and not a group) then # the invoked subcommand is None. ctx.invoked_subcommand = None ctx.subcommand_passed = None injected = hooked_wrapped_callback(self, ctx, self.callback) # type: ignore await injected(*ctx.args, **ctx.kwargs) # type: ignore
Отредактировано Genabox (Янв. 26, 2023 07:17:15)
Офлайн
bot = commands.Bot(command_prefix="!") # Set an attribute on our bot bot.test = "I am accessible everywhere!" @bot.command() async def get(ctx: commands.Context): """A command to get the current value of `test`.""" # Send what the test attribute is currently set to await ctx.send(ctx.bot.test) @bot.command() async def setval(ctx: commands.Context, *, new_text: str): """A command to set a new value of `test`.""" # Here we change the attribute to what was specified in new_text bot.test = new_text
Офлайн
а если так сделать сработает?
import some_module @bot.command() async def setval(ctx: commands.Context, *, new_text: str): """A command to set a new value of `test`.""" # Here we change the attribute to what was specified in new_text bot.test = some_module.get_weather('city')
Отредактировано xam1816 (Янв. 26, 2023 22:40:42)
Офлайн
нет ты не понял
это мне не нужно
у меня функцию запускает программа (не дискорд бот), эта функция получает данный, аудиофайлы картинки неважно
теперь мне это нужно запихнуть в дискор
—
мне не нужно в бот импортровать свои модули в бот файл потому что они выполняют автономную работу и результат выдают в чат - тоесть работают независимо а дискорд юзают лишь для выдачи инфы
—
может я что то неправильно оъясняю но задача простая
послать полученную инфо в дискорд чат или дискорд войс чат
как вызвать этого бота своей прогой с скормить ему мою инфу я не понимаю
—-
бот уже сидит в чате и все понимает, тут проблем нет.
просто я не понимаю как вызвать этот асинхронный дикоратор ИМЕННО СВОЕЙ ПРОГОЙ %)
Отредактировано Genabox (Янв. 26, 2023 23:44:44)
Офлайн
а то что ты описал у меня такое есть
@bot.command(name='hi3') async def SendMessage(ctx): await weatherV(ctx)
Офлайн