我有一个脚本,它有内嵌按钮,当在群聊中点击时,会向私人消息发送消息。
我想尝试让他们通过聊天 ID 响应按下内联按钮发送
如果可能,请告诉我如何添加通过聊天 ID 发送消息的位置和方式
对于这些消息,我需要将发送更改为聊天 ID:https://imgur.com/a/RdXSb7E
PS:这是聊天ID (-1001479485376)
import logging
import asyncio
from aiogram import Bot, Dispatcher, executor, types
from aiogram.utils.markdown import hbold, hunderline, hcode, hlink
API_TOKEN = 'token'
# Configure logging
logging.basicConfig(level=logging.INFO)
# Initialize bot and dispatcher
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)
@dp.message_handler(commands='cat')
async def send_welcome(message: types.Message):
# So... At first I want to send something like this:
await message.reply("Вы хотите видеть много кисок? Вы готовы? ?")
# Wait a little...
await asyncio.sleep(1)
# Good bots should send chat actions...
await types.ChatActions.upload_photo()
# Create media group
media = types.MediaGroup()
# Attach local file
media.attach_photo(types.InputFile('data/cat.jpg'), 'Cat!')
# More local files and more cats!
media.attach_photo(types.InputFile('data/cats.jpg'), 'More cats!')
# You can also use URL's
# For example: get random puss:
media.attach_photo('http://lorempixel.com/400/200/cats/', 'Random cat.')
# And you can also use file ID:
# media.attach_photo('<file_id>', 'cat-cat-cat.')
# Done! Send media group
await message.reply_media_group(media=media)
@dp.message_handler(commands='dog')
async def send_welcome(message: types.Message):
# So... At first I want to send something like this:
await message.reply("Вы хотите видеть много собачек? Вы готовы? ?")
# Wait a little...
await asyncio.sleep(1)
# Good bots should send chat actions...
await types.ChatActions.upload_photo()
# Create media group
media = types.MediaGroup()
# Attach local file
media.attach_photo(types.InputFile('data/c2b.jpg'), 'Dog!')
# More local files and more cats!
media.attach_photo(types.InputFile('data/c2a.jpg'), 'More dog!')
media.attach_photo(types.InputFile('data/c2w.gif'), 'More dogs!')
# Done! Send media group
await message.reply_media_group(media=media)
@dp.message_handler(commands='music')
async def send_welcome(message: types.Message):
# So... At first I want to send something like this:
await message.reply("Вот и музычка подъехала! Вы готовы? ?")
# Wait a little...
await asyncio.sleep(1)
await types.ChatActions.upload_photo()
# Create media group
media = types.MediaGroup()
media.attach_audio(types.InputFile('data/ChillOut.mp3'), 'Music!')
media.attach_audio(types.InputFile('data/REIMANN TEAM.mp3'), 'Music2!')
media.attach_audio(types.InputFile('data/Mister Robot Поёт.mp3'), 'Music3!')
# Done! Send media group
await message.reply_media_group(media=media)
@dp.message_handler(commands='bot')
async def start_cmd_handler(message: types.Message):
keyboard_markup = types.InlineKeyboardMarkup(row_width=3)
# default row_width is 3, so here we can omit it actually
# kept for clearness
text_and_data = (
('Помощь ?', 'Помощь ?'),
('Правила ⚔️', 'Правила ⚔️'),
('Мануалы ?', 'Мануалы ?'),
)
# in real life for the callback_data the callback data factory should be used
# here the raw string is used for the simplicity
row_btns = (types.InlineKeyboardButton(text, callback_data=data) for text, data in text_and_data)
keyboard_markup.row(*row_btns)
keyboard_markup.add(
# url buttons have no callback data
types.InlineKeyboardButton('ReimannLogs ?', url='https://t.me/reimannlogs_bot'),
)
await message.reply("Здравствуй, сударь! ??\nС чем тебе нужна помощь?", reply_markup=keyboard_markup)
# Use multiple registrators. Handler will execute when one of the filters is OK
@dp.callback_query_handler(text='Правила ⚔️') # if cb.data == 'no'
@dp.callback_query_handler(text='Помощь ?') # if cb.data == 'yes'
@dp.callback_query_handler(text='Мануалы ?')
async def inline_kb_answer_callback_handler(query: types.CallbackQuery):
answer_data = query.data
# always answer callback queries, even if you have nothing to say
await query.answer(f'Вы выбрали пункт {answer_data!r}')
if answer_data == 'Помощь ?':
text = "Есть какие-то вопросы? ?\n \nВот реквезиты:\n \nПо всем вопросам: @FollHash ☯️\nПо всем вопросам, заявкам в тиму: @t3sse ☯️\n \nВот полезные команды, для развлекухи:\n \n/cat - киски ?\n/dog - собачки ?\n/music - музычка ?"
elif answer_data == 'Правила ⚔️':
text = """Пᴩᴀʙиᴧᴀ чᴀᴛᴀ ?
=======================
Зᴀᴨᴩᴇщᴇнᴏ: ?
- ᴧюбᴀя ᴋᴏʍʍᴇᴩция ʙ чᴀᴛᴇ (ᴨᴏᴋуᴨᴋᴀ/ᴨᴩᴏдᴀжᴀ)
- уᴋᴀɜыʙᴀᴛь иᴧи ᴨᴏʍᴇчᴀᴛь дᴩуᴦиᴇ ᴋᴀнᴀᴧы иᴧи бᴏᴛы
- ᴩᴇᴋᴧᴀʍᴀ иᴧи уᴨᴏʍинᴀниᴇ ᴨᴏхᴏжих ᴩᴇᴄуᴩᴄᴏʙ/ɯᴏᴨᴏʙ/нᴇйʍᴏʙ ʙ ᴧюбᴏʍ ᴋᴏнᴛᴇᴋᴄᴛᴇ
- ᴨᴏᴨᴩᴏɯᴀйничᴇᴄᴛʙᴏ
- ɜᴧᴏуᴨᴏᴛᴩᴇбᴧᴇниᴇ "CAPS LOCK"
- ʙᴇᴄᴛи ᴄᴇбя нᴇᴀдᴇᴋʙᴀᴛнᴏ ʙ чᴀᴛᴇ и ᴩᴀɜʙᴏдиᴛь "ᴄᴩᴀч"
- ᴏᴄᴋᴏᴩбᴧᴇниᴇ "мᴏдᴇᴩᴀции/ᴨᴩᴏᴇᴋᴛᴀ/ɯᴏᴨᴀ" - бᴀн ❗️
- ᴏᴛᴨᴩᴀʙᴧяᴛь ᴄᴋᴩиʍᴇᴩы, ᴩᴀᴄчᴧᴇнᴇнᴋу, ᴄʙᴀᴄᴛиᴋу, нᴀциɜʍ, ᴋᴏнᴛᴇнᴛ ?
- ᴏɸᴏᴩʍᴧяᴛь ᴩᴀɜᴧичныᴇ ᴋᴀᴩᴛы, ᴀбуɜиᴛь ᴩᴇɸᴇᴩᴀᴧьную ᴄиᴄᴛᴇʍу, ᴄᴋᴀʍ и ᴏбʍᴀн ᴨᴏᴧьɜᴏʙᴀᴛᴇᴧᴇй
- ᴨᴩᴏᴨᴀᴦᴀндᴀ ᴨᴏᴧиᴛиᴋи
- ɸᴧуд\ᴄᴨᴀʍ ᴏдинᴀᴋᴏʙыʍи ɜᴀ ᴋᴏнᴛᴇᴋᴄᴛᴏʍ ᴄᴧᴏʙᴀʍи иᴧи ᴨᴩᴇдᴧᴏжᴇнияʍи (1 ᴨᴩᴇдуᴨᴩᴇждᴇниᴇ, ᴨᴏᴄᴧᴇ - ɯᴛᴩᴀɸ) """
elif answer_data == 'Мануалы ?':
text = "Краткий мануал о том как обрабатывать логи - https://telegra.ph/Kak-obrabatyvat-logi-05-30\nЗа привлечение новой аудитории, выдаю логи?"
else:
text = f'Unexpected callback data {answer_data!r}!'
await bot.send_message(query.from_chat.id, text)
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)
答案 0 :(得分:0)
只需将 await bot.send_message(query.from_chat.id, text)
更改为 await bot.send_message(-1001479485376, text)
。请参阅文档 here。