Для получения названия канала и имени владельца, когда боту выданы права администратора в канале, можно воспользоваться методом getChat() и getUser(), предоставляемыми Telegram Bot API.
Пример кода для этого:
```python
from telegram import Bot
from telegram.ext import Updater
from telegram.ext import CommandHandler
def start(update, context):
chat_id = update.message.chat_id
chat = context.bot.get_chat(chat_id)
chat_name = chat.title
owner_id = chat.get_administrators()[0].user.id
owner = context.bot.get_user(owner_id)
owner_name = owner.first_name
update.message.reply_text(f"Название канала: {chat_name}\nИмя владельца: {owner_name}")
def main():
TOKEN = "YOUR_BOT_TOKEN"
updater = Updater(TOKEN)
dp = updater.dispatcher
dp.add_handler(CommandHandler('start', start))
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
```
Чтобы определить, кто добавил бота в определенный канал и записать эту информацию в базу данных после предоставления прав боту, можно использовать хранение данных о каналах и их администраторах в базе данных и обновлять эту информацию при предоставлении прав боту.
Примерно такой алгоритм можно использовать для этого:
1. При предоставлении прав боту в канале получить информацию о канале и его владельце (как описано выше).
2. Записать эту информацию в базу данных (например, используя SQLite или другую СУБД).
3. При добавлении новых данных в базу данных проверить, есть ли уже существующая запись для этого канала и обновить ее при необходимости.
Например, можно создать таблицу в базе данных для хранения информации о каналах:
```sql
CREATE TABLE channels (
chat_id INTEGER PRIMARY KEY,
chat_name TEXT,
owner_id INTEGER,
owner_name TEXT
);
```
И добавить запросы для вставки и обновления данных:
```python
import sqlite3
def update_channel_info(chat_id, chat_name, owner_id, owner_name):
conn = sqlite3.connect('channel_info.db')
c = conn.cursor()
c.execute("INSERT OR REPLACE INTO channels (chat_id, chat_name, owner_id, owner_name) VALUES (?, ?, ?, ?)", (chat_id, chat_name, owner_id, owner_name))
conn.commit()
conn.close()
```
Таким образом, вы сможете хранить информацию о каналах и их владельцах в базе данных и обновлять ее при необходимости после предоставления прав боту.