Как конвертировать класс Member в класс Interaction?
Ситуация такая, что прописан ивент присоединения к голосовому каналу: on_voice_state_update(member: disnake.Member, before: disnake.VoiceState, after: disnake.VoiceState).
Дальше есть слеш команда, в которой принимается значение Interaction. Я хочу добавить в этот ивент автоматический вызов слеш команды, но нужно конвертировать значение. Как это сделать?
Никак.
Предположу, что тебе надо на самом деле не команду автоматически вызывать при заходе, а делать то, что делает эта команда.
Для этого тебе надо выделить код команды в отдельную функцию, которая будет принимать Member и вызывать эту функцию из двух мест: старого обработчика Interaction и нового обработчика on_voice_state_update
Может быть. Проблема в том. По факту команда, может вызываться как функция, но эта функция и все другие которая она включает, написаны под Interaction. Отчасти это можно решить просто переписав все, но там 200 строчек кода, и хотелось бы найти решение малой крови.
Я прочитал всю документалку. Почти всю, но увы пока не нашел то что ищу. Видимо нужно будет что-то придумывать
Все так, как выше сказано. Ваши собственные функции не должны принимать как аргумент все взаимодействие целиком - это большой и сложный объект, который вы к тому же не можете сами создать.
fenrir, извини, но я не до конца понял твою мысль. Было бы удобнее если бы можно было поговорить в личных сообщениях. Скажу честно, по факту относительно вас, я новичок написания кода. И до этого я писал на С++ и то под контроллеры. Я изучал документацию, и методы в Member не позволяют особо выводить информацию на каналы. Можно это сделать через сам канал, но тогда вопрос как тогда настроить взаимодейтсвие с пользователем через кнопки. из-за этого сложнее переписать функцию которую я создал. Если нужно я могу создать новый вопрос и скинуть туда код.
Дмитрий, Interaction это объект, который тебе возвращает всю информацию по команде, которую набрал пользователь. В нем лежит пара десятков объектов, которые определяют кто, что, где, с каким правами набрал. Когда пользователь заходит в канал, очевидно данных приходит значительно меньше: откуда перешел, куда и сам пользователь.
Если и там и там должна отрабатывать одна функция она должна принимать необходимый минимум
fenrir, Василий Банников, я вроде придумал как можно это избежать. Попробую прописать без изменения функции. Я добавлю новую функцию, которая будет вызываться в ивенте, и так как при нажатии на кнопку происходит вызов класса Interaction то можно по идеи туда запихнуть последующую группу функций которые уже прописаны