如何通过聊天ID发送消息?

时间:2021-06-20 00:28:29

标签: python telegram-bot

我有一个脚本,它有内嵌按钮,当在群聊中点击时,会向私人消息发送消息。

我想尝试让他们通过聊天 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)

1 个答案:

答案 0 :(得分:0)

只需将 await bot.send_message(query.from_chat.id, text) 更改为 await bot.send_message(-1001479485376, text)。请参阅文档 here