diff --git a/discord/ui/select.py b/discord/ui/select.py index b7a8e694cf1c..6738b9727c56 100644 --- a/discord/ui/select.py +++ b/discord/ui/select.py @@ -499,7 +499,7 @@ def append_option(self, option: SelectOption) -> None: The number of options exceeds 25. """ - if len(self._underlying.options) > 25: + if len(self._underlying.options) >= 25: raise ValueError('maximum number of options already provided') self._underlying.options.append(option) diff --git a/tests/test_ui_selects.py b/tests/test_ui_selects.py new file mode 100644 index 000000000000..a9019c3de995 --- /dev/null +++ b/tests/test_ui_selects.py @@ -0,0 +1,39 @@ +""" +The MIT License (MIT) + +Copyright (c) 2015-present Rapptz + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. +""" + +from __future__ import annotations + +import discord +import pytest + + +@pytest.mark.asyncio +async def test_add_option(): + select = discord.ui.Select() + + for i in range(1, 25 + 1): + select.add_option(label=str(i), value=str(i)) + + with pytest.raises(ValueError): + select.add_option(label="26", value="26")