message.guild.members содержит только бота
чтобы кнопка появилась, нужно создать такую клавиатуру
reply_markup
, которое может в себе содержать InlineKeyboardMarkup or ReplyKeyboardMarkup or ReplyKeyboardRemove or ForceReply
keyboard
, которое является Array of Array of KeyboardButton
text
, определяющее, как ни странно, текст, и другие, которые меняют поведение кнопки.import requests
CHAT_ID = 123
TOKEN = 123
keyboard = {'keyboard': [[{'text': 'Button 1'}, {'text': 'Button 2', 'request_contact': True}]]}
payload = {'chat_id': CHAT_ID , 'text': 'Hello, world!', 'reply_markup': keyboard}
requests.post(f'https://api.telegram.org/bot{TOKEN}/sendMessage', json=payload)
messages.send
, передав в него параметр attachment
со значением в виде нужных аттачментов в формате <type><owner_id>_<media_id>
через запятую.if event_chat.type == VkBotEventType.WALL_POST_NEW:
id_ = event_chat.object['id']
owner_id_ = event_chat.group_id
wall_post = f'wall-{owner_id_}_{id_}'
vk.method('messages.send', {'peer_id': id2, 'message': 'Новый пост в группе', 'attachment': wall_post})
_
после owner_id
можно не ставить vk.method('messages.getConversationMembers', {'peer_id': peer_id})
if after.channel:
await member.remove_roles(etaj1, etaj2, etaj3, ...)
before.channel
, то в нем не используется ни одна из 10 переменных, на создание которых ушло время.Positional argument after keyword argument
bot.send_photo([Тут мой ID в Telegram], photo_dog)
bot.send_photo(chat_id=[Тут мой ID в Telegram], photo=photo_dog)
bot.send_photo([Тут мой ID в Telegram], photo=photo_dog)
@bot.callback_query_handler()