Search code examples
pythontelegramvalueerrortelethon

ValueError: Could not find the input entity for PeerUser


I've got this Error after fixing my previous problem, here is the log:

    Unhandled exception on handle_new_message
Traceback (most recent call last):
  File "C:\Users\user\AppData\Local\Programs\Python\Python39-32\lib\site-packages\telethon\client\updates.py", line 454, in _dispatch_update
    await callback(event)
  File "C:\Users\user\Downloads\Compressed\telegram-auto-reply-master\main.py", line 38, in handle_new_message
    from_ = await event.client.get_entity(event.from_id)  # this lookup will be cached by telethon
  File "C:\Users\user\AppData\Local\Programs\Python\Python39-32\lib\site-packages\telethon\client\users.py", line 287, in get_entity
    inputs.append(await self.get_input_entity(x))
  File "C:\Users\user\AppData\Local\Programs\Python\Python39-32\lib\site-packages\telethon\client\users.py", line 461, in get_input_entity
    raise ValueError(
ValueError: Could not find the input entity for PeerUser(user_id=981588717) (PeerUser). Please read https://docs.telethon.dev/en/latest/concepts/entities.html to find out more details.
Unhandled exception on handle_new_message
Traceback (most recent call last):
  File "C:\Users\user\AppData\Local\Programs\Python\Python39-32\lib\site-packages\telethon\client\updates.py", line 454, in _dispatch_update
    await callback(event)
  File "C:\Users\user\Downloads\Compressed\telegram-auto-reply-master\main.py", line 38, in handle_new_message
    from_ = await event.client.get_entity(event.from_id)  # this lookup will be cached by telethon
  File "C:\Users\user\AppData\Local\Programs\Python\Python39-32\lib\site-packages\telethon\client\users.py", line 287, in get_entity
    inputs.append(await self.get_input_entity(x))
  File "C:\Users\user\AppData\Local\Programs\Python\Python39-32\lib\site-packages\telethon\client\users.py", line 461, in get_input_entity
    raise ValueError(
ValueError: Could not find the input entity for PeerUser(user_id=1658148281) (PeerUser). Please read https://docs.telethon.dev/en/latest/concepts/entities.html to find out more details.
Unhandled exception on handle_new_message
Traceback (most recent call last):
  File "C:\Users\user\AppData\Local\Programs\Python\Python39-32\lib\site-packages\telethon\client\updates.py", line 454, in _dispatch_update
    await callback(event)
  File "C:\Users\user\Downloads\Compressed\telegram-auto-reply-master\main.py", line 38, in handle_new_message
    from_ = await event.client.get_entity(event.from_id)  # this lookup will be cached by telethon
  File "C:\Users\user\AppData\Local\Programs\Python\Python39-32\lib\site-packages\telethon\client\users.py", line 287, in get_entity
    inputs.append(await self.get_input_entity(x))
  File "C:\Users\user\AppData\Local\Programs\Python\Python39-32\lib\site-packages\telethon\client\users.py", line 461, in get_input_entity
    raise ValueError(
ValueError: Could not find the input entity for PeerUser(user_id=965240226) (PeerUser). Please read https://docs.telethon.dev/en/latest/concepts/entities.html to find out more details.
Unhandled exception on handle_new_message
Traceback (most recent call last):
  File "C:\Users\user\AppData\Local\Programs\Python\Python39-32\lib\site-packages\telethon\client\updates.py", line 454, in _dispatch_update
    await callback(event)
  File "C:\Users\user\Downloads\Compressed\telegram-auto-reply-master\main.py", line 38, in handle_new_message
    from_ = await event.client.get_entity(event.from_id)  # this lookup will be cached by telethon
  File "C:\Users\user\AppData\Local\Programs\Python\Python39-32\lib\site-packages\telethon\client\users.py", line 287, in get_entity
    inputs.append(await self.get_input_entity(x))
  File "C:\Users\user\AppData\Local\Programs\Python\Python39-32\lib\site-packages\telethon\client\users.py", line 461, in get_input_entity
    raise ValueError(
ValueError: Could not find the input entity for PeerUser(user_id=1964324322) (PeerUser). Please read https://docs.telethon.dev/en/latest/concepts/entities.html to find out more details.
Unhandled exception on handle_new_message
Traceback (most recent call last):
  File "C:\Users\user\AppData\Local\Programs\Python\Python39-32\lib\site-packages\telethon\client\updates.py", line 454, in _dispatch_update
    await callback(event)
  File "C:\Users\user\Downloads\Compressed\telegram-auto-reply-master\main.py", line 38, in handle_new_message
    from_ = await event.client.get_entity(event.from_id)  # this lookup will be cached by telethon
  File "C:\Users\user\AppData\Local\Programs\Python\Python39-32\lib\site-packages\telethon\client\users.py", line 287, in get_entity
    inputs.append(await self.get_input_entity(x))
  File "C:\Users\user\AppData\Local\Programs\Python\Python39-32\lib\site-packages\telethon\client\users.py", line 461, in get_input_entity
    raise ValueError(
ValueError: Could not find the input entity for PeerUser(user_id=1660769244) (PeerUser). Please read https://docs.telethon.dev/en/latest/concepts/entities.html to find out more details.
Unhandled exception on handle_new_message
Traceback (most recent call last):
  File "C:\Users\user\AppData\Local\Programs\Python\Python39-32\lib\site-packages\telethon\client\updates.py", line 454, in _dispatch_update
    await callback(event)
  File "C:\Users\user\Downloads\Compressed\telegram-auto-reply-master\main.py", line 38, in handle_new_message
    from_ = await event.client.get_entity(event.from_id)  # this lookup will be cached by telethon
  File "C:\Users\user\AppData\Local\Programs\Python\Python39-32\lib\site-packages\telethon\client\users.py", line 287, in get_entity
    inputs.append(await self.get_input_entity(x))
  File "C:\Users\user\AppData\Local\Programs\Python\Python39-32\lib\site-packages\telethon\client\users.py", line 461, in get_input_entity
    raise ValueError(
ValueError: Could not find the input entity for PeerUser(user_id=1893756687) (PeerUser). Please read https://docs.telethon.dev/en/latest/concepts/entities.html to find out more details.
Unhandled exception on handle_new_message
Traceback (most recent call last):
  File "C:\Users\user\AppData\Local\Programs\Python\Python39-32\lib\site-packages\telethon\client\updates.py", line 454, in _dispatch_update
    await callback(event)
  File "C:\Users\user\Downloads\Compressed\telegram-auto-reply-master\main.py", line 38, in handle_new_message
    from_ = await event.client.get_entity(event.from_id)  # this lookup will be cached by telethon
  File "C:\Users\user\AppData\Local\Programs\Python\Python39-32\lib\site-packages\telethon\client\users.py", line 287, in get_entity
    inputs.append(await self.get_input_entity(x))
  File "C:\Users\user\AppData\Local\Programs\Python\Python39-32\lib\site-packages\telethon\client\users.py", line 461, in get_input_entity
    raise ValueError(
ValueError: Could not find the input entity for PeerUser(user_id=1834060740) (PeerUser). Please read https://docs.telethon.dev/en/latest/concepts/entities.html to find out more details.
Unhandled exception on handle_new_message
Traceback (most recent call last):
  File "C:\Users\user\AppData\Local\Programs\Python\Python39-32\lib\site-packages\telethon\client\updates.py", line 454, in _dispatch_update
    await callback(event)
  File "C:\Users\user\Downloads\Compressed\telegram-auto-reply-master\main.py", line 38, in handle_new_message
    from_ = await event.client.get_entity(event.from_id)  # this lookup will be cached by telethon
  File "C:\Users\user\AppData\Local\Programs\Python\Python39-32\lib\site-packages\telethon\client\users.py", line 287, in get_entity
    inputs.append(await self.get_input_entity(x))
  File "C:\Users\user\AppData\Local\Programs\Python\Python39-32\lib\site-packages\telethon\client\users.py", line 461, in get_input_entity
    raise ValueError(
ValueError: Could not find the input entity for PeerUser(user_id=716702203) (PeerUser). Please read https://docs.telethon.dev/en/latest/concepts/entities.html to find out more details.
U

Here is the Code:

    #!/usr/bin/env python3
# A simple script to print some messages.
import time
import re
import json
import random
import os
from asyncio import sleep
from pprint import pprint

from telethon import TelegramClient, events, utils
from dotenv import load_dotenv

load_dotenv() # get .env variable

session = os.environ.get('TG_SESSION', 'printer')
api_id = os.getenv("API_ID")
api_hash = os.getenv("API_HASH")
debug_mode = os.getenv("DEBUG_MODE").upper() == "TRUE"

proxy = None  # https://github.com/Anorov/PySocks

# Create and start the client so we can make requests (we don't here)
client = TelegramClient(session, api_id, api_hash, proxy=proxy).start()

# create a sender list to check if user already send private message or mention
senderList = [] 

#read json file and prepare quiz to send later
with open('quizzes.json') as json_file:
    quizzes = json.load(json_file)

@client.on(events.NewMessage)
async def handle_new_message(event):
    
    me = await client.get_me()
    username = me.username
    from_ = await event.client.get_entity(event.from_id)  # this lookup will be cached by telethon
    to_ = await event.client.get_entity(event.message.to_id)

    needToProceed = from_.is_self if debug_mode else not from_.is_self and (event.is_private or re.search("@"+me.username,event.raw_text))
    if needToProceed:  # only auto-reply to private chats:  # only auto-reply to private chats   
        if not from_.bot and event:  # don't auto-reply to bots
            print(time.asctime(), '-', event.message)  # optionally log time and message
            await sleep(1)  # pause for 1 second to rate-limit automatic replies   
            message = ""
            senderList.append(to_.id)
            if senderList.count(to_.id) < 2:
                message =   f"""**AUTO REPLY**
                \nHi @{from_.username},
                \n\nMohon maaf boss saya sedang offline, mohon tunggu sebentar.
                \nSilahkan lihat-lihat [imacakes](https://www.instagram.com/ima_cake_cirebon) dulu untuk cuci mata.
                \n\n**AUTO REPLY**"""
            elif senderList.count(to_.id) < 3:
                message =   f"""**AUTO REPLY**
                \nMohon bersabar @{from_.username}, boss saya masih offline šŸ˜’"""
            elif senderList.count(to_.id) < 4:
                message = f"""**AUTO REPLY** 
                \n@{from_.username} Tolong bersabar yaa šŸ˜…"""
            else:
                random_number = random.randint(0,len(quizzes) - 1)
                question = quizzes[random_number]['question']
                answer = quizzes[random_number]['answer']
                message = f"""**AUTO REPLY**
                \n @{from_.username}, Main tebak-tebakan aja yuk šŸ˜
                \n {question}
                \n {answer}
                \n """
            
            if message != "":
                await event.reply(message)

client.start()
client.run_until_disconnected()

I don't really know whats wrong because I'm new and don't know much about coding so if anyone willing to help me i really appreciate that :)

Also Thanks to @ogdenkev for helping me solving the previous problem :)

Thank You for anyone helping me :)


Solution

  • I am not familiar with Telethon, but the docs referenced in the error state

    To ā€œencounterā€ an ID, you would have to ā€œfind itā€ like you would in the normal app. If the peer is in your dialogs, you would need to client.get_dialogs(). If the peer is someone in a group, you would similarly client.get_participants(group).

    Once you have encountered an ID, the library will (by default) have saved their access_hash for you, which is needed to invoke most methods. This is why sometimes you might encounter this error when working with the library. You should except ValueError and run code that you know should work to find the entity.

    And the summary hints that you might need to try finding the entity in different places. Though ideally you already know the right way to find the entity. In your code this might be something like.

    @client.on(events.NewMessage)
    async def handle_new_message(event):
        
        me = await client.get_me()
        username = me.username
        try:
            from_ = await event.client.get_entity(event.from_id)
        except ValueError:
            pass
        try:
            # Do you have a conversation open with them? Get dialogs.
            await client.get_dialogs()
        except ValueError:
            pass
        try:
            # Are they participant of some group? Get them.
            await client.get_participants('username')
        except ValueError:
            pass
        if from_ is None:
            raise ValueError("I could not find the user")