nikto_211, ещё раз:
channel = bot.get_channel(888744193076387881) <- ты указал айдишник канал, который тебя интересует.
Но это неправильный айдишник, он принадлежит текстовому каналу, а не голосовому. И discord.py отдаёт тебе описание этого текстового канала, будучи уверен, что тебе это надо.
Какой должен быть правильный - я без понятия. Ты знаешь, на каком сервере твой бот будет работать, вот и узнавай, какой id у нужного тебе канала.
Если из интерфейса дискорда узнать не можешь - придётся хитрить. Например,
1. получаешь объект сервера вызовом client.get_guild(). Уж id сервера узнать сможешь, я надеюсь.
2. На полученном объекте дергаешь свойство .voice_channels и перебираешь его циклом for
3. Для каждого элемента этого списка выводишь свойства .id и .name в консоль. Вот тут уже и узнаешь, какой правильный id для интересующего тебя голосового канала.
Python Новичок, ещё раз...
То, что ты получаешь от requests - это исходный код страницы.
Он потом изменяется JS-кодом, который выполняет бразуер. А этот JS-код берёт данные, выполняя ещё один запрос к сайту, и подставляет их на страницу. Это очень частый приём.
У тебя есть два варианта:
1. Выполнить JS код, а потом уже искать элемент на странице. Нужен полноценный браузер, так что selenium тебе в руки.
2. Определить, какой запрос делает JS код, сделать его самостоятельно, и вытащить данные оттуда.
Valentin_Vilchinskiy, тебе так или иначе пришлось бы ставить сторонний пакет, либо командой pip install, либо через настройки проекта в среде разработки. Уж наверно знаешь, какой пакет ставил?
Вообще начни с изучения просто Питона как такового. Боты - штука не такая простая, как кажется.
Сколько же вас, новичков, которые тут же бросаются писать ботов.
Для начала приведи минимальный пример, демонстрирующий проблему и оформи его кнопкой </>
Будет проще понять, что не так.
Далее, какой пакет ты используешь? Потому что есть просто пакет telebot, а есть pyTelegramBotAPI, и они оба импортируются под именем telebot.
Амир Федунец, Ну так и разбей задачу на части. Почти каждая часть в отдельности вполне себе ищется в документации.
1. Реакция на личные сообщения. Складывается из двух частей: реакция на сообщение + проверка, что сообщение личное. Реакция на сообщение - это событие on_message. Ты получаешь объект Message, у которого есть свойство channel. Если channel - это экземпляр (isinstance) DMChannel, то сообщение было в личку. Собственно, это необязательно делать - проще сделать просто команды, хотя бы для начала.
2. Реакция на команды - это обычное дело. В примерах кода в доках есть.
3. Отправка сообщения в заданный канал - .fetch_channel() чтобы получить объект канала, и .send() на полученном канале для отправки.
Взять и сделать. Из вопроса непонятно, в чём конкретно затруднение, и вообще это два вопроса или один?
По поводу личных сообщений смотри документацию на discord.py, все что касается DirectMessage. А по поводу действий, это очень расплывчатое понятие.
Так что уточни вопрос.
Kto Takoi, нагугли документацию на pyTelegramBotAPI, там полно примеров. Например, для использования .send_message() (для групп и для участников). Достаточно знать id чата, в который нужно послать сообщение.
Kto Takoi, ну во-первых, есть такая полезная кнопка для оформления кода - </>
Во-вторых, я специально попросил полный текст ошибки плюс traceback (последовательность вызовов, приведшая к ошибке).
Если ты не умеешь его читать, это не значит что он бесполезен.
k0r0g, нет, любой символ - это просто точка. И даже так, зачем добавлять пробельные символы? Они уже входят в точку.
Но да, ответ выше более-менее корректный. По идее не должен сломаться, если в условии встретиться GROUP BY как строковой литерал.
WHERE something = 'GROUP BY' GROUP BY something_else;
Shandy, ну вот если взять пример из доков по ссылке выше.
import gettext
gettext.bindtextdomain('myapplication', '/path/to/my/language/directory')
gettext.textdomain('myapplication')
_ = gettext.gettext
# ...
print(_('This is a translatable string.'))
Если я верно понимаю, это как словарь. У нас есть ключ на "оригинальном языке", в даннмо случае английском 'This is a translatable string.', которому сопоставлены строки на других языках (тех, для которых мы добавили переводы).
Если мы захотим изменить оригинальную строку на 'This is a translatable string!', нам придётся везде исправить это сопоставление, и для каждой локализации указать новый ключ. Если какую-то локаль забудем - там всплывёт изменённая английская строка. Т.е. даже мелкое изменение в строке, которое может не менять её смысла, может сломать сопоставление. Дополнительная работа при изменении строк "в оригинале".
В случае с константой это не так - нет "оригинального" языка, они все равноправны.