Atualmente o bot dev (experimental/pirata), quando usado em canais que não deve ser usado, retorna uma mensagem automática de erro:
Isso acontece porque temos um try/except genérico que captura qualquer coisa e manda pra lá esse erro, devemos por outro lado, tratar especialmente esse erro e dar uma mensagem melhor.
O stacktrace da exceção:
> File "/home/lerax/apps/nemli-nemlerei-bot/dev/nemli/commands/utility/summarize.py", line 46, in summarize_command
messages = await channel.history(limit=message_count).flatten() # type: ignore
│ │ └ 100
│ └ <function Messageable.history at 0x70084895f380>
└ <TextChannel id=1247560693125877903 name='geral' position=6 nsfw=False news=False category_id=1247560693125877901>
File "/home/lerax/apps/nemli-nemlerei-bot/dev/.venv/lib/python3.12/site-packages/nextcord/iterators.py", line 114, in flatten
return [element async for element in self]
└ <nextcord.iterators.HistoryIterator object at 0x700845fc19a0>
File "/home/lerax/apps/nemli-nemlerei-bot/dev/.venv/lib/python3.12/site-packages/nextcord/iterators.py", line 118, in __anext__
return await self.next()
│ └ <function HistoryIterator.next at 0x700849198680>
└ <nextcord.iterators.HistoryIterator object at 0x700845fc19a0>
File "/home/lerax/apps/nemli-nemlerei-bot/dev/.venv/lib/python3.12/site-packages/nextcord/iterators.py", line 321, in next
await self.fill_messages()
│ └ <function HistoryIterator.fill_messages at 0x7008491987c0>
└ <nextcord.iterators.HistoryIterator object at 0x700845fc19a0>
File "/home/lerax/apps/nemli-nemlerei-bot/dev/.venv/lib/python3.12/site-packages/nextcord/iterators.py", line 344, in fill_messages
data = await self._retrieve_messages(self.retrieve)
│ │ │ └ 100
│ │ └ <nextcord.iterators.HistoryIterator object at 0x700845fc19a0>
│ └ <bound method HistoryIterator._retrieve_messages_before_strategy of <nextcord.iterators.HistoryIterator object at 0x700845fc1...
└ <nextcord.iterators.HistoryIterator object at 0x700845fc19a0>
File "/home/lerax/apps/nemli-nemlerei-bot/dev/.venv/lib/python3.12/site-packages/nextcord/iterators.py", line 364, in _retrieve_messages_before_strategy
data: List[MessagePayload] = await self.state.http.logs_from(
│ │ │ │ └ <function HTTPClient.logs_from at 0x70084886b560>
│ │ │ └ <nextcord.http.HTTPClient object at 0x7008487a5910>
│ │ └ <nextcord.state.ConnectionState object at 0x700848626390>
│ └ <nextcord.iterators.HistoryIterator object at 0x700845fc19a0>
└ typing.List
File "/home/lerax/apps/nemli-nemlerei-bot/dev/.venv/lib/python3.12/site-packages/nextcord/http.py", line 393, in request
raise Forbidden(response, data)
│ │ └ {'message': 'Missing Access', 'code': 50001}
│ └ <ClientResponse(https://discord.com/api/v10/channels/1247560693125877903/messages?limit=100) [403 Forbidden]>
│ <CIMultiDictPro...
└ <class 'nextcord.errors.Forbidden'>
nextcord.errors.Forbidden: 403 Forbidden (error code: 50001): Missing Access
Atualmente o bot dev (experimental/pirata), quando usado em canais que não deve ser usado, retorna uma mensagem automática de erro:
Isso acontece porque temos um try/except genérico que captura qualquer coisa e manda pra lá esse erro, devemos por outro lado, tratar especialmente esse erro e dar uma mensagem melhor.
O stacktrace da exceção:
Ou seja, capturar a exceção
nextcord.error.Forbidden
e tratar nessa parte do código: https://github.com/milharal-dev/nemli-nemlerei-bot/blob/master/nemli/commands/utility/summarize.py#L96-L100Eu queria que a mensagem, quando fosse causada pelo bot experimental, fosse algo como: