# " Made by @e3ris for Ultroid. "
# < https://github.com/TeamUltroid/Ultroid >
# idea : https://t.me/TelethonChat/256160  (^_^メ)


"""✘ Search Messages in chat easily :)

✘ **CMD** :
>> {i}search (some_text)
>> {i}search (some_text : 50)
>> {i}search -r (some_text)

✘ **Examples** :
   •  `{i}search Ultroid : 25`
   »» gets 25 newest msg with "Ultroid" in it..
    
   •  `{i}search -r Heroku : 10`
   »» gets 10 oldest msg with "Heroku" in it..

   »» Use "-r" to Search in Reverse order.
       [Oldest to Newest]
"""


@ultroid_cmd(pattern="search( -r|) ?(.*)")
async def searcher(e):
    if e.fwd_from:
        return
    eris = await eor(e, "`Working..`")
    args = e.pattern_match.group(2)
    if not args or len(args) < 3:
        await eod(eris, "Invalid argument!, Try again")
        return

    limit, cx, c = 8, "", 0
    if ":" in args:
        args, limit = args.split(":")
    try:
        limit = int(limit)
    except BaseException:
        limit = 8

    limit = 99 if limit > 99 else limit
    async for msg in e.client.iter_messages(
        e.chat_id,
        search=args.strip(),
        limit=limit,
        reverse=bool(e.pattern_match.group(1))
    ):
        cx += f" ◍  [{msg.id}](t.me/c/{e.chat.id}/{msg.id}) \n"
        c += 1

    txt = (
        f"**Results for :**  `{args}` \n\n{cx}"
        if c > 0
        else f"**No Results for :**  `{args}`"
    )
    await eris.edit(txt) 