@@ -109,13 +109,15 @@ class SilverbackBot(ManagerAccessMixin):
109
109
... # Connection has been initialized, can call broker methods e.g. `bot.on_(...)`
110
110
"""
111
111
112
- def __init__ (self , settings : Settings | None = None ):
112
+ def __init__ (self , settings : Settings | None = None , signer_required : bool = False ):
113
113
"""
114
114
Create bot
115
115
116
116
Args:
117
117
settings (~:class:`silverback.settings.Settings` | None): Settings override.
118
118
Defaults to environment settings.
119
+ signer_required (bool): If True, raise at startup when no signer is configured.
120
+ Defaults to False.
119
121
"""
120
122
if not settings :
121
123
settings = Settings ()
@@ -153,7 +155,11 @@ def __init__(self, settings: Settings | None = None):
153
155
154
156
atexit .register (provider_context .__exit__ , None , None , None )
155
157
158
+ self .signer_required = signer_required
156
159
self .signer = settings .get_signer ()
160
+ if self .signer_required and not self .signer :
161
+ raise NoSignerLoaded ()
162
+
157
163
if self .signer :
158
164
# NOTE: Monkeypatch `AccountAPI.call` to update bot nonce tracking state
159
165
original_call = self .signer .call
@@ -437,7 +443,7 @@ def broker_task_decorator(
437
443
438
444
# Register user function as task handler with our broker
439
445
def add_taskiq_task (
440
- handler : Callable [..., Any | Awaitable [Any ]]
446
+ handler : Callable [..., Any | Awaitable [Any ]],
441
447
) -> AsyncTaskiqDecoratedTask :
442
448
labels : dict [str , str ] = dict ()
443
449
0 commit comments