Найти - Пользователи
Полная версия: Добавление пользователей в Телеграмм Группу
Начало » Python для новичков » Добавление пользователей в Телеграмм Группу
1
Pronkyt
Здравствуйте. Написал простенького бота, который берет номер телефона из файла в эксель и добавляет его в группу.
 import telebot
import openpyxl
TOKEN = ' '
bot = telebot.TeleBot(TOKEN)
# Считываем данные из Excel-файла
wb = openpyxl.load_workbook('Заречный.xlsx')
sheet = wb.active
contacts = []
for row in sheet.iter_rows(min_row=2, values_only=True):
    phone_number = row[0]
    name = row[1]
    city = row[2]
    operator = row[3]
    region = row[4]
    contacts.append((phone_number, name, city, operator, region))
# Добавляем контакты в группу
chat_id = '-1001658022999'
user_ids = []
for contact in contacts:
    phone_number = contact[0]
    name = contact[1]
    phone_number_digits_only = ''.join(filter(str.isdigit, str(phone_number)))
    try:
        user = bot.get_chat_member(chat_id, phone_number_digits_only)
        if user.status in ['member', 'administrator']:
            user_id = user.user.id
            user_ids.append(user_id)
    except telebot.apihelper.ApiException as e:
        print(f"Error adding member with phone number {phone_number_digits_only}: {e}")
if user_ids:
    bot.add_chat_members(chat_id, user_ids)

Пишет ошибку: Error adding member with phone number 9003186553: A request to the Telegram API was unsuccessful. Error code: 400. Description: Bad Request: user not found.

У меня в таблице российские номера в таком формате:
79270932254

Я думаю, что проблема в номере и не знаю, как его вводить. По идее, +7 сразу добавляется, если вручную добавлять пользователя, но должно работать и так наверно..

Тогда проблема в этом куске кода, где задаю формат.
 phone_number_digits_only = ''.join(filter(str.isdigit, str(phone_number)))
    try:
        user = bot.get_chat_member(chat_id, phone_number_digits_only)

Буду рад любой помощи)
py.user.next
Pronkyt
  
user = bot.get_chat_member(chat_id, phone_number_digits_only)
Вот в этой строке на время введи номер напрямую
  
user = bot.get_chat_member(chat_id, '89003186553')
и посмотри, обнаруживается ли этот номер.

И с чего ты взял, что идентификатор пользователя в чате Telegram равен его телефонному номеру? Сам придумал? Ты почитай что-нибудь сначала, прежде чем писать код вообще.

Pronkyt
У меня в таблице российские номера в таком формате:
79270932254
Ну это же бред. Ты почитай по номерам что-нибудь сначала. Там либо с плюсом семёрка должна быть - плюс как раз и говорит о том, что это международный код из международной таблицы кодов - либо там должна быть восьмёрка, которая является в России кодом выхода за пределы России или на федеральный уровень.

Соответственно, номер этот пишется либо так +79270932254, либо вот так 89270932254 и никак больше. А короткая версия номера - это вообще отдельный номер. Он может и похож быть на последние цифры, но этот никак не связано, это просто совпадение такое.

Так что лучше выясни для начала, как у тебя неправильные записи попали в таблицу. Если она неправильная, её надо переделать в правильную сначала. Иначе ты так во всех программах, в которых будет использоваться эта неправильная таблица, будешь писать эти преобразователи из неправильных данных в правильные.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB